5

我是否应该释放为 char 数组分配的内存,函数返回的指针char * getenv( char * )?哪种方式 - Cfree()或 C+ delete []?如果没有 - 为什么?

我是说:

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

谢谢你。

4

2 回答 2

5

原始数据存储在environ变量中(这是一个 char* 数组,包含所有环境变量及其值),getenv()只搜索对应的变量名并从environ变量中返回其值的位置,所以你没有释放它,否则可能会发生未定义的行为。

于 2010-08-14T14:52:46.573 回答
4

Getenv 返回指向您的流程环境的指针。它不需要被释放,最好不要这样做。(delete 和 free 可能足够聪明,什么也不做,但破坏你的环境不是一个好主意。)

于 2010-08-14T12:52:04.610 回答