0

我想知道如果我改变内存返回会发生什么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);

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

我试过了,没有发生错误或分段错误。

4

2 回答 2

5

不,你不能。从文档中:

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

于 2013-08-20T07:35:51.493 回答
2

这是具有未定义行为的错误代码。即你没有保姆。

于 2013-08-20T07:37:57.040 回答