c ++是否将字符串文字的静态分配应用于任何const char *

问题描述 投票:0回答:1

在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++ string-literals
1个回答
0
投票

首先,是哪种情况下的C ++版本?

据我所知,该规则从一开始就存在(并且在C语言中也存在)。

[其次,这扩展到任何“ const char *”吗?

否,它仅适用于字符串literals(即"括起来的字符串)。

© www.soinside.com 2019 - 2024. All rights reserved.