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