我現在對此代碼感到困惑。在「if」塊中分配char文字
int flag = 1;
struct {
char * data;
}
neco;
if(flag) {
neco.data = "index.html";
}
// insert code here...
std::cout << neco.data;
}
是安全打印neco.data「如果」塊,或內存分配裏面,如果塊被「清洗」後的「如果」塊結束後?
我現在對此代碼感到困惑。在「if」塊中分配char文字
int flag = 1;
struct {
char * data;
}
neco;
if(flag) {
neco.data = "index.html";
}
// insert code here...
std::cout << neco.data;
}
是安全打印neco.data「如果」塊,或內存分配裏面,如果塊被「清洗」後的「如果」塊結束後?
如果塊在「if」塊結束後「清除」,可以安全地在「if」塊之後打印neco.data,還是內存已分配 ?
字符串文字永遠不會超出範圍。程序本身就是它們的範圍。
正如us1212在評論中提到的那樣,您需要確保neco.data被初始化爲或者如果該分支未被採用,則永遠不要使用它。
如果在「if」塊結束後塊被「清除」,可以安全地在「if」塊之後打印neco.data,還是內部已分配內存?
在字符串中的問題,"index.html"
文字,將繼續存在過去if
塊的結尾,所以在這方面的代碼是好的。
「安全」是什麼意思? – 2013-02-28 07:37:25
這不是C/C++,它是C++。 – 2013-02-28 07:38:03
@Daniel Kamil Kozar:是的代碼是C++,但所有這些語言的問題都是相同的 – Krab 2013-02-28 07:38:42