C语言 为什么 char * malloc 给我一个 scanf 的 seg 错误


char * input = (char*)malloc(256);
scanf("%s", input);

赛格故障。为什么?我在 C 中的字符串上遇到了很多麻烦,但我觉得一切都在这里完成。我什至遵循了 100k+ SO 用户的示例。

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

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

您需要确保缓冲区足够大,包括为字符串末尾的尾随 NUL(0 字节)提供足够的空间。否则,会出现缓冲区溢出,这可能会导致段错误。

相关内容

  • 没有找到相关文章

最新更新