在Stroustrup C ++ 4thEd p176中,他指出此代码是安全的,因为字符串文字是静态分配的
const char∗ f() { return "some literal"; }
我对此有两个问题:
首先,在哪种版本的C ++上变成了这种情况? (并且它依赖于实现吗?)
[其次,这扩展到任何“ const char *”吗?在第二部分中,我猜答案是否定的,因为这会导致运行时错误:
const char* make_const_char_ptr(){
const char res [] = {'a','b','c', '\0' };
return res;
}
首先,是哪种情况下的C ++版本?
据我所知,该规则从一开始就存在(并且在C语言中也存在)。
[其次,这扩展到任何“ const char *”吗?
否,它仅适用于字符串literals(即"
括起来的字符串)。