使用const char*时出现内存故障? 我在C++平台上使用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)时,上述代码会正确执行。 上述代码显示内存故障。 对上述非预期行为有何建议??使用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
提前感谢如果您将空指针传递给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()
的消解问题,请参阅