我是否应该释放为char数组分配的内存,char * getenv( char * )
函数返回指针?哪种方式 - C free()
或C + delete []
?如果不是 - 为什么?
我的意思是:
char * ptr = getenv( "LS_COLORS" );
cout << ptr << endl;
delete [] ptr; //Is this or free() call needed?
谢谢。
答案 0 :(得分:5)
原始数据存储在environ
变量(char *数组并包含所有环境变量及其值)中,getenv()
仅搜索相应的变量名称并返回位置它的值来自environ
变量,因此您不必释放它,否则可能会发生未定义的行为。
答案 1 :(得分:4)
Getenv返回指向您的进程环境的指针。它不需要被释放,并且不是这样的好主意。 (删除和免费可能足够聪明,什么都不做,但腐败你的环境不是一个好主意。)