使用const char*时出现内存故障? 我在C++平台上使用C++,我必须得到一个环境变量的值(用户定义的),并进一步使用它。 下面是我正在使用的代码 const char *show_line = getenv ("MY_SHOW_LINES"); bool myFlag = (strcmp(show_line, "1") == 0) ? false : true;

使用const char*时出现内存故障? 我在C++平台上使用C++,我必须得到一个环境变量的值(用户定义的),并进一步使用它。 下面是我正在使用的代码 const char *show_line = getenv ("MY_SHOW_LINES"); bool myFlag = (strcmp(show_line, "1") == 0) ? false : true;,c++,linux,environment-variables,C++,Linux,Environment Variables,当我将环境变量(MY_SHOW_LINES)的值设置为1,但当我取消设置它的值(即取消设置MY_SHOW_LINES)时,上述代码会正确执行。 上述代码显示内存故障。 对上述非预期行为有何建议?? 提前感谢如果您将空指针传递给strcmp,您将得到未定义的行为,在这种情况下很可能发生崩溃 您是否知道指针可能是空的,即故意无效 你应该警惕这种可能性: bool myFlag = false; // set default value if ( show_line != NULL ) { m

当我将环境变量(MY_SHOW_LINES)的值设置为1,但当我取消设置它的值(即取消设置MY_SHOW_LINES)时,上述代码会正确执行。 上述代码显示内存故障。 对上述非预期行为有何建议??
提前感谢

如果您将空指针传递给strcmp,您将得到未定义的行为,在这种情况下很可能发生崩溃

您是否知道指针可能是空的,即故意无效

你应该警惕这种可能性:

bool myFlag = false; // set default value
if ( show_line != NULL ) {
    myFlag = ( strcmp(show_line, "1") != 0 ); // "? false : true" same as NOT…
}

如果将空指针传递给strcmp,则会得到未定义的行为,在这种情况下很可能发生崩溃

您是否知道指针可能是空的,即故意无效

你应该警惕这种可能性:

bool myFlag = false; // set default value
if ( show_line != NULL ) {
    myFlag = ( strcmp(show_line, "1") != 0 ); // "? false : true" same as NOT…
}

根据手册

函数的作用是:返回指向 环境,如果不匹配则为NULL


因此,如果它不存在,它将返回
NULL
,根据手册页,这将导致strcmp()的消化问题

函数的作用是:返回指向 环境,如果不匹配则为NULL

因此,如果它不存在,它将返回
NULL
,这将导致
strcmp()

的消解问题,请参阅