因此,此代码可能会导致段错误,因为指针只被分配了第一个内存地址和可用范围之外的内存位置吗?或者它会像一组字符一样自行分配。
int main(){
char *final;
final = "This might cause a segfault. Especially if I am SUPPERRR LOOOOOOOOONNNNGG";
return 0;
}
答案 0 :(得分:1)
您对字符串文字的使用非常好。
来自C ++草案标准(N3337):
2.14.5字符串文字
8普通字符串文字和UTF-8字符串文字也称为窄字符串文字。窄字符串文字的类型为“ n
const char
”数组,其中 n 是下面定义的字符串大小,并且具有静态存储持续时间(3.7 )。...
12是否所有字符串文字都是不同的(即存储在非重叠对象中)是实现定义的。尝试修改字符串文字的效果未定义。
和
3.7.1静态存储时间
1所有没有动态存储持续时间,没有线程存储持续时间且不是本地的变量都具有静态存储持续时间。这些实体的存储应持续到程序的持续时间
只要您不尝试通过指针更改字符串文字的内容,就没有问题。