【发布时间】:2022-01-24 10:46:45
【问题描述】:
函数getenv(const char * key) 返回char *。
这是否意味着我可以更改返回的 char 数组中的某些字符?
例如
char * name = getenv("PROJECT_NAME");
if(name && strlen(name) > 0) name[0] = 'P';
这样做是个好习惯吗?我应该制作自己的数组副本吗?环境变量存储在哪里(内存的哪一部分)?直到项目结束都可以使用吗?
感谢您的回答。
【问题讨论】:
-
不,这不是好的做法,因为它会调用未定义的行为(如 Alan Birtles 提供的链接中所述)。
getenv()没有返回const char *的原因(不鼓励你写信)是因为它的规范很旧,从 C (!) 甚至不支持const的时候开始。
标签: c++ memory environment-variables