【发布时间】:2014-08-04 09:28:06
【问题描述】:
我在下面的代码中收到Segmentation fault (core dumped) 错误。
请指出我哪里出错了?
#include "string.h"
int main(){
char *str=NULL;
strcpy(str,"something");
printf("%s",str);
return 0;
}
我正在浏览一个发现此问题并尝试编译代码的站点。它说预期的输出应该是(空)。这是链接cquestions.com/2010/10/c-interview-questions-and-answers.html第13题最后一个例子
【问题讨论】:
-
您需要让
strcpy的第一个参数指向您可能写入的已分配内存。将NULL作为第一个参数传递往往会导致访问冲突。 -
您分配给
str的唯一值是NULL。然后你尝试将一个字符串复制到 NULL,然后从 NULL 打印一个字符串。这应该如何工作? -
@LightnessRacesinOrbit 你为什么会这样想? Hanlon's razor
-
@sehe:因为它非常基础,几乎在一本合适的 C 书籍的开头就涵盖了,并且在这里被问过很多很多次。然后看看下面的代表结果。
-
@LightnessRacesinOrbit:提问者似乎被一个糟糕的网站弄糊涂了。请参阅下面关于 hacks 答案的 cmets。
标签: c pointers segmentation-fault