首页 文章

strcpy()导致分段错误? [重复]

提问于
浏览
1

可能重复:获取分段错误

为什么此代码会导致分段错误?

char *text = "foo";
strcpy(text, "");

据我所知,第一行分配一些内存(以保存字符串"foo")和 text 指向分配的内存 . 第二行将空字符串复制到 text 指向的位置 .

这段代码可能没有多大意义,但为什么它失败了?

3 回答

  • 0

    每当你有一个字符串文字(在你的情况下,"foo"),程序将该值存储在内存的 readonly 部分 .

    strcpy 想要修改该值,但它只是readonly,因此是分段错误 .

    此外, text 应该是 const char* ,而不是 char* .

  • 5

    因为字符串文字(如 "foo" )是 read-only .

  • 0

    因为字符串文字存储在内存的只读区域中 .

    因此,尝试修改 foo (在这种情况下使用 strcpy )是 undefined behavior .

相关问题