putenv与setenv的区别:
- putenv可以使用程序中已定义,且值形如"name=value"的字符串变量作为函数的实参。此时,系统将不再为该环境变量分配内存,使用的是程序中定义变量的内存,而是将该字符串的变量地址保存在环境中。因此该变量应该定义为全局变量,以防止该函数推出以后导致环境变量不可用。
- char *var="sex=male";
- putenv(var);
char *var="sex=male"; putenv(var);
- putenv可以使用形如"name=value"的常量字符串作为函数的实参。此时系统需要为该变量分配内存,存储字符串"name=value"。
- putenv("sex=male");
putenv("sex=male");
- setenv必须分配内存,存储字符串"name=value";
- setenv("sex","male",1);
setenv("sex","male",1);