【发布时间】:2014-04-04 16:27:42
【问题描述】:
我一直在寻找互联网和 SO,并试图找到如何检测和修复段错误。我经常遇到这个错误,我只能在谷歌上找到,所以这是一个内存问题(这个答案很有帮助:https://stackoverflow.com/a/3200536/3334282)。我想知道导致它的糟糕编程是什么,以便我可以避免它。
我最近的例子是尝试学习如何使用 fgets()。
FILE *text;
char array[100];
fopen("text.txt", "r");
fgets(array, 100, text);
printf("%s\n", array);
fclose(text);
这会返回 8181 分段错误(核心转储)。
【问题讨论】:
-
text = fopen("text.txt", "r")
-
谢谢@Exceptyon 和 Joachim 我不知道它需要初始化,为什么会这样?它修复了错误,但我仍然想知道如何避免它们。
-
当您尝试访问未经授权的内存时会发生段错误。这里你创建了一个 FILE 指针,但是你没有分配它,你需要使用 fopen 来做这件事。如果您不知道,我建议您从头开始修改 c,抱歉。无论如何,为了避免一般的段错误,请在有问题的代码周围设置断点并在执行时查看变量值。
标签: c segmentation-fault fgets