删除getenv()返回的char数组

时间:2010-08-14 12:44:33

标签: c++ arrays pointers char getenv

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

我的意思是:

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

谢谢。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

Getenv返回指向您的进程环境的指针。它不需要被释放,并且不是这样的好主意。 (删除和免费可能足够聪明,什么都不做,但腐败你的环境不是一个好主意。)