C++ 中的环境变量是否可写?

Are environment variables in C++ writeable?

函数getenv(const char * key)returnschar *.

这是否意味着我可以更改返回的 char 数组中的某些字符?

例如

char * name = getenv("PROJECT_NAME");

if(name && strlen(name) > 0) name[0] = 'P';

这样做是好的做法吗?我应该制作自己的数组副本吗?环境变量存储在哪里(内存的哪一部分)?它们在节目结束前可用吗?

感谢您的回答。

https://en.cppreference.com/w/cpp/utility/program/getenv中:

Modifying the string returned by getenv invokes undefined behavior.

因此您可以修改它,但这样做会导致未定义的行为。所以你不应该这样做