【问题标题】:Segmentation Fault when run loop 41881 times [closed]运行循环41881次时出现分段错误[关闭]
【发布时间】:2023-04-08 03:42:01
【问题描述】:

我正在编写一个读取文本文件并将其中的数据解析为各个字段的 C 程序。我正在读取的文本文件非常大(31MB),当我在具有 41880 行输入的文本文件上运行程序时,一切正常。我最终将需要读取比这大得多的文本文件。因此,当我将行增加到 41881 时,虽然我遇到了分段错误。有什么想法吗?

【问题讨论】:

  • 如果没有损坏部分的来源,几乎不可能找出问题所在。
  • 31 MB 不是那么大,所以我怀疑你有一个错误,而不是简单地耗尽内存。你能发布你的代码吗?
  • 抱歉,我的千里眼已经不是以前那样了。愿意提供一些有问题的代码吗?
  • 谁投了这个票???
  • 再一次,我们需要源代码,否则我们只会做一些毫无意义的猜测。

标签: c file-io segmentation-fault


【解决方案1】:

你在路上的某个地方浪费了记忆,它终于在第 41881 行击中你。

如果您的平台受支持,请尝试在Valgrind 下运行。

【讨论】:

  • 或在 gdb 下,当它出现段错误时执行 bt
  • @ninjalj - 这是完全不同的事情。 gdb 将在崩溃设置错误发生时向您显示您的上下文。但是,如果破坏内存的代码没有立即触发崩溃(不幸的是,这很常见),那么知道崩溃发生的位置可能无法帮助您找到实际的错误所在。
猜你喜欢
  • 1970-01-01
  • 2019-03-27
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多