我应该释放为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?
谢谢。
我应该释放为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?
谢谢。
原始数据存储在environ
变量(它是一个char *数组,包含所有环境变量它们的值),getenv()
只搜索相应的变量名称并从environ
变量中返回其值的位置,因此您不必释放它,否则可能会发生未定义的行为。
Getenv返回一个指向你的进程环境的指针。它不需要被解除分配,这可能是一个不错的主意。 (删除和释放可能足够聪明,什么也不做,但破坏你的环境不是一个好主意。)
我不会相信任何删除或自由存在的“聪明无能”。 – TheUndeadFish 2010-08-14 16:43:34