为什么char * malloc给我一个scanf的seg错误?

时间:2012-10-07 18:34:29

标签: c string segmentation-fault scanf

char * input = (char*)malloc(256);

scanf("%s", input);

Seg fault。为什么?我在C语言中遇到很多麻烦,但我觉得一切都在这里完成。我甚至从一个100k + SO用户那里得到了一个例子。

2 个答案:

答案 0 :(得分:2)

该错误可能由以下原因引起:

  • malloc()无法分配任何内存,请检查结果是否为NULL。
  • 来自scanf的缓冲区溢出,超过256个字符。
  • 忘记包含<stdlib.h>,然后对malloc的结果进行类型转换。更多信息here

答案 1 :(得分:0)

您需要确保缓冲区足够大,包括足够的空间用于字符串末尾的尾随NUL(0字节)。否则,您将获得可能导致段错误的缓冲区溢出。