一旦将局部变量放入环境列表中,就无法访问环境变量

问题描述 投票:0回答:1

这是我的代码

#include <unistd.h>
#include <stdlib.h>
#include <iostream>

using namespace std;
int main(int argc, char* argv[]) {
  char *var = "TEST=/usr/home";
  putenv(var);
  cout<<getenv("TEST")<<endl; // This works
  var[0]= 'A'; // Crashes as soon as this runs
  cout<<getenv("AEST")<<endl;
  return 0;
}

输出是

/usr/home
zsh: bus error  ./t

如果我理解正确的话,这个var指针将成为environmnet本身的一部分,所以如果我更新这个变量,getenv也应该给我更新的东西 但在 mac 中却崩溃了。

Macbook 的结果 = 它因总线错误而崩溃 Linux 中的结果 = 没有崩溃,也没有输出,似乎该行完全被忽略了

c++ environment-variables
1个回答
0
投票

字符串文字是常量。 使用 char var[] = "TEST=/usr/home";会起作用

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.