getEnv()によって返されたchar配列の削除
質問
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は、プロセス環境へのポインターを返します。それは扱う必要はありません、そしてそれはおそらくそうしないことを良い考えです。 (削除と無料はおそらく何もするほど賢いですが、環境を破壊することは良い考えではありません。)
所属していません StackOverflow