【发布时间】:2012-03-16 10:12:29
【问题描述】:
我的代码在我写的时候没有崩溃:
char s[44] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
memmove(s, "asdf", 5);
但是当我写的时候它确实如此:
char* s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
memmove(s, "asdf", 5);
有人知道为什么吗?
【问题讨论】:
-
您遇到分段错误了吗?你是用 gcc 编译的吗?
-
尝试修改字符串文字是未定义的行为。在您的情况下,显然,UB 会使您的程序崩溃;在另一台计算机上,它可能会更改字符串文字的内容;在另一台计算机上,它可能会使柠檬汁从 USB 端口渗出。