0

我现在对这段代码感到困惑。

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

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

4

2 回答 2

5

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

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

正如评论中提到的 us2012,您需要确保 neco.data 已初始化,或者如果未采用该分支,则永远不要使用它。

于 2013-02-28T07:37:26.397 回答
0

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

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

于 2013-02-28T07:37:53.650 回答