为什么这个代码导致段错误?
char *text = "foo";
strcpy(text, "");
据我的理解,第一行分配一些内存(持有字符串“foo”)和text
指向分配的内存。第二行将一个空字符串复制到text
指向的位置。
此代码可能没有多大意义,但它为什么会失败?
为什么这个代码导致段错误?
char *text = "foo";
strcpy(text, "");
据我的理解,第一行分配一些内存(持有字符串“foo”)和text
指向分配的内存。第二行将一个空字符串复制到text
指向的位置。
此代码可能没有多大意义,但它为什么会失败?
每当你有一个字符串文字(在你的情况下,“foo”),程序将该值存储在只读部分内存中。
strcpy
想要修改该值,但它是只读的,因此存在分段错误。
此外,text
应该是一个const char*
,而不是一个char*
。
因为字符串文字(如"foo"
)是只读。
因为字符串文字存储在内存的只读区域。
因此,尝试修改foo
(在这种情况下使用strcpy
)是未定义的行为。
看看搜索结果。看他们!@#! http://stackoverflow.com/search?q=strcpy+segmentation+fault – quasiverse
什么是最好的重复?我无法轻松找到它。 – erisco
它们并非全部重复,但错误通常是相同的。 – Mysticial