您好我在Linux平台上使用C ++,我必须获取环境变量(用户定义)的值并进一步使用它。 以下是我正在使用的代码,
const char *show_line = getenv ("MY_SHOW_LINES");
bool myFlag = (strcmp(show_line, "1") == 0) ? false : true;
当我将环境变量(MY_SHOW_LINES)的值设置为1但是当我取消设置它的值(即取消设置MY_SHOW_LINES)时,上面的代码正确执行。 上面的代码给出了内存故障 对联合国预期行为的任何建议? 提前致谢
答案 0 :(得分:4)
如果将NULL指针传递给strcmp
,则会出现未定义的行为,在这种情况下很可能会发生崩溃。
您是否知道指针可能是NULL
,即故意无效?
你应该防范这种可能性:
bool myFlag = false; // set default value
if ( show_line != NULL ) {
myFlag = ( strcmp(show_line, "1") != 0 ); // "? false : true" same as NOT…
}
答案 1 :(得分:0)
根据手册页,
getenv()函数返回指向该值的指针 环境,如果没有匹配则为NULL。
因此,如果它不存在,则返回NULL
,这会导致strcmp()
的消化问题。