Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我是否应该释放为 char 数组分配的内存,函数返回的指针char * getenv( char * )?哪种方式 - Cfree()或 C+ delete []?如果没有 - 为什么?
char * getenv( char * )
free()
delete []
我是说:
char * ptr = getenv( "LS_COLORS" ); cout << ptr << endl; delete [] ptr; //Is this or free() call needed?
谢谢你。
原始数据存储在environ变量中(这是一个 char* 数组,包含所有环境变量及其值),getenv()只搜索对应的变量名并从environ变量中返回其值的位置,所以你没有释放它,否则可能会发生未定义的行为。
environ
getenv()
Getenv 返回指向您的流程环境的指针。它不需要被释放,最好不要这样做。(delete 和 free 可能足够聪明,什么也不做,但破坏你的环境不是一个好主意。)