int main()
{
char *p = "I like C++";
strcpy(p, "John Smith");
std::cout << p << std::endl;
EXIT_SUCCESS;
}
正如标题所述,为什么会导致分割错误
答案 0 :(得分:2)
以strcpy()
documentation使用的术语来说,您正在尝试将“ John Smith”(source
参数)复制到p
({{1} }参数。
尽管destination
是类型p
的指针,但它位于只读数据部分(可能是char *
)。
尝试将新字符串复制到其中,意味着尝试覆盖只读内存。
将声明更改为.rodata
可以解决此问题,因为char p[] = "I like C++";
现在驻留在stach中,该stach是可读写的内存。
顺便说一句,最后一行缺少p
,应为return
。