2011-02-14 4 views
0

すべて。 ONC + SUN RPCに基づくサーバープログラムの1つの手順で static char* result = malloc(1000*sizeof(char));を使用すると、しかし、この文字列は返されるべきものです。メモリはSUN RPCを使用して無料です

静的な場合は、解放する必要はありません。毎回、文字列の結果には同じアドレスが割り当てられ、メモリの競合は発生しません。

私は正しいですか?または私は何をすべきですか?これは戻り値です、それを解放する方法は? ありがとう

答えて

0

私はあなたの質問を理解したら、タイプchar*を返す関数呼び出しでイニシャライザを使用しています。その場合、静的ストレージクラスの使用に問題はありません。 resultは、プログラムの全期間を通じてその値(割り当てたメモリアドレス)を保持します。

しかし、この場合、mallocは複数回呼び出されません。初めてのあなたの機能を通して。また、メモリはまだヒープ上に割り当てられているので、完了したらメモリを解放する必要があります。ただし、この解放はプログラムのexit()で実行されるため、無視することができます。

+1

アプリケーション終了時にメモリがオペレーティングシステムによって自動的に再利用されることは間違いありませんが、これは決してメモリ管理に関する「怠惰な」開始の引数ではありません。メモリを割り当てる場合は、終了時にメモリが解放されたとしても、アプリケーションの後のどこかで解放してください。 – Patrick

関連する問題