我是否应该释放分配给字符阵列的内存,指针将其返回 char * getenv( char * ) 功能?以及哪种方式-C free() 或C+ delete []?如果没有 - 为什么?

我是说:

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

谢谢你。

有帮助吗?

解决方案

原始数据存储在 environ 变量(这是一个char*的数组,包含具有其值的所有环境变量), getenv() 仅搜索相应的变量名称,然后从 environ 可变,因此您不必释放它,否则可能会发生不确定的行为。

其他提示

Getenv将指针返回到您的流程环境。它不需要被划分,这可能是一个好主意。 (删除和自由可能足够聪明,无法做任何事情,但是破坏您的环境不是一个好主意。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top