【发布时间】:2011-04-20 02:19:42
【问题描述】:
考虑以下代码:
char* str = "Hello World";
memcpy(str, "Copy\0", 5);
在 memcpy 期间发生分段错误。但是,使用此代码:
char str[12];
memcpy(str, "Hello World\0", 12);
memcpy(str, "Copy\0", 5);
程序不会产生分段错误。
问题是否来自于在堆栈上分配内存而不是在数据段上分配内存?
【问题讨论】:
-
为什么是双空?字符串文字已经包含终止符
\0,正如您在sizeof "foobar"中看到的那样。
标签: c string memory-management