strcpy()导致分段错误?

Tho*_*mas 1 c c++ segmentation-fault strcpy

可能重复:
获取分段错误

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

char *text = "foo";
strcpy(text, "");
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*lon 5

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

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

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