setenv与putenv的区别

putenv与setenv的区别:

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

  • putenv可以使用形如"name=value"的常量字符串作为函数的实参。此时系统需要为该变量分配内存,存储字符串"name=value"。
    putenv("sex=male");

  • setenv必须分配内存,存储字符串"name=value";
    setenv("sex","male",1);

你可能感兴趣的:(存储)