在“if”块中指定char literal

时间:2013-02-28 07:36:12

标签: c++ memory

我现在对此代码感到困惑。

int flag = 1;
struct {
    char * data;
}
neco;
if(flag) {
    neco.data = "index.html";
}
// insert code here...
std::cout << neco.data;
}

在“if”块之后打印neco.data是安全的,或者在“if”块结束后如果块被“清理”,内部分配的内存是否安全?

2 个答案:

答案 0 :(得分:5)

  

在“if”阻止或内存分配后打印neco.data是安全的   如果块在“if”块结束后被“清理”,则在里面?

字符串文字永远不会超出范围。该计划本身就是他们的范围。

正如我们2012年在评论中提到的那样,你需要确保neco.data被初始化,或者如果不采用那个分支则永远不要使用它。

答案 1 :(得分:0)

  

在“if”块之后打印neco.data是否安全,或者如果在“if”块结束后块被“清理”,则内存位于内部?

有问题的字符串文字"index.html"将继续存在于if块的末尾,所以在这方面代码很好。