2010-08-14 29 views
5

我应该释放为char数组分配的内存,char * getenv(char *)函数返回的指针是什么?以及哪种方式 - C free()或C + delete []?如果不是 - 为什么?删除由getenv返回的字符数组()

我的意思是:

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

谢谢。

回答

5

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

4

Getenv返回一个指向你的进程环境的指针。它不需要被解除分配,这可能是一个不错的主意。 (删除和释放可能足够聪明,什么也不做,但破坏你的环境不是一个好主意。)

+2

我不会相信任何删除或自由存在的“聪明无能”。 – TheUndeadFish 2010-08-14 16:43:34