我可以更改getenv的返回值吗?

Lid*_*Guo 0 c environment-variables

我想知道如果我改变内存返回将会发生什么 getenv

我知道这不是一个好的代码.setenv顺便说一句,我知道.

喜欢:

char *new_path = "/home/user/dev/myTry1";
char *path = getenv("PATH");// assume there is : PATH=/home/user/dev/myTry
//now *path = "/home/user/dev/myTry" 
memcpy(path,new_path,strlen(new_path)+1);
Run Code Online (Sandbox Code Playgroud)

这是一个未定义的行为吗?或者只是一个错误的代码?

我试了一下,没有发生错误或分段错误.

小智 5

不,你不能.从文档:

合规应用程序不需要直接修改environ,而是仅使用此处描述的功能将过程环境作为抽象对象进行操作.