strcpy()导致分段错误?

时间:2011-09-22 01:21:25

标签: c++ c segmentation-fault strcpy

  

可能重复:
  Getting Segmentation Fault

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

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

据我了解,第一行分配一些内存(保存字符串“foo”)和text指向分配的内存。第二行将空字符串复制到text指向的位置。

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

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:0)

因为字符串文字(如"foo"只读

答案 2 :(得分:0)

因为字符串文字存储在只读存储区域中。

因此,尝试修改foo(在这种情况下使用strcpy)是未定义的行为