char * val;
val = getenv("ENV_VAR_NAME");
Run Code Online (Sandbox Code Playgroud)
上面是获取环境变量的代码,如果我不释放getenv(char*)返回的内存,它会导致内存泄漏吗?如果没有那么请回答原因?
ice*_*ime 38
不,你不应该.标准7.20.4.5说:
getenv函数返回指向与匹配列表成员关联的字符串的指针.指向的字符串不应被程序修改,但可能会被后续的getenv函数调用覆盖.
我相信删除内容以粗体显示.
不.您无法控制其存储空间.通常,它是指向多次重用的静态数组的指针.因此,如果您计划将其存储以供以后使用,则应将其复制(您应确保正确释放此副本).
除非文档明确说明你可以释放指针,否则你不应该.