質問

char配列に割り当てられたメモリを解放する必要があります。 char * getenv( char * ) 働き?そしてどちらの方法 - c free() またはC+ delete []?いいえ - なぜ?

つまり:

char * ptr = getenv( "LS_COLORS" );
cout << ptr << endl;
delete [] ptr; //Is this or free() call needed?

ありがとうございました。

役に立ちましたか?

解決

元のデータはに保存されます environ 変数(これはchar*の配列であり、その値のすべての環境変数が含まれています)、 getenv() 対応する変数名のみを検索し、その値の位置をから返します environ 変数なので、解放する必要はありません。そうしないと、未定義の動作が発生する可能性があります。

他のヒント

GetENVは、プロセス環境へのポインターを返します。それは扱う必要はありません、そしてそれはおそらくそうしないことを良い考えです。 (削除と無料はおそらく何もするほど賢いですが、環境を破壊することは良い考えではありません。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top