1

可能重复:
获取分段错误

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

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

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

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

4

3 回答 3

6

每当您有字符串文字(在您的情况下为“foo”)时,程序都会将该值存储在内存的只读部分中。

strcpy想要修改该值,但它是只读的,因此出现分段错误。

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

于 2011-09-22T01:23:38.167 回答
0

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

于 2011-09-22T01:24:00.837 回答
0

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

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

于 2011-09-22T01:26:39.590 回答