我现在对这段代码感到困惑。
int flag = 1;
struct {
char * data;
}
neco;
if(flag) {
neco.data = "index.html";
}
// insert code here...
std::cout << neco.data;
}
在“if”块之后打印 neco.data 是否安全,或者在“if”块结束后如果块被“清理”,则在内部分配的内存是否安全?
在“if”块之后打印 neco.data 是否安全,或者在“if”块结束后如果块被“清理”,则内存分配在内部?
字符串文字永远不会超出范围。该计划本身就是他们的范围。
正如评论中提到的 us2012,您需要确保 neco.data 已初始化,或者如果未采用该分支,则永远不要使用它。
在“if”块之后打印 neco.data 是否安全,或者在“if”块结束后如果块被“清理”,则内存分配在内部?
有问题的字符串文字"index.html"
, 将继续存在于if
块的末尾,因此在这方面代码很好。