【问题标题】:Segmentation fault on malloc on one test case一个测试用例上 malloc 的分段错误
【发布时间】:2013-06-05 10:02:15
【问题描述】:

能否请任何大师帮助我识别分段错误?分段错误似乎只在我的一个测试用例中出现问题,并且似乎在为结构中的特定指针分配内存时发生。这适用于所有其他测试用例,这有点奇怪。

这是我的代码:

http://pastebin.com/dfUqQnYy - 分段错误发生在第 453 行。

speeches[i].who = malloc(nb_of_sirs_involved * sizeof(int));

以下是作为参数传递的示例输入(使用 cat):

http://pastebin.com/YWv1F88G - 导致分段错误的那个。

http://pastebin.com/i0V7KNH3 - 不会导致分段错误的其他测试用例之一。

我不确定出了什么问题。是什么导致 malloc 失败?我确定我有足够的内存可以分配!

【问题讨论】:

  • 我不认为是 malloc 失败,更可能的是(虽然我没有读过代码)speeches[i] 不存在。
  • pastebin 不是一个好主意。你应该提供一个sscce.org
  • @Navnath - 但这不会阻止段错误......
  • 你应该检查 malloc() 的结果!如果你 malloc/free 许多小的和不同大小的块,你可能会比你想象的更快地耗尽内存
  • codereview.stackexchange.com 上问这个可能更合适。无论如何,SO 不应该替换好的旧调试器。

标签: c debugging


【解决方案1】:

我发现了问题。这是一个未初始化的布尔变量...我不知道它如何与 Speeches[i].who 相关,但它解决了我的问题。谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 2014-03-29
    • 2015-01-29
    • 1970-01-01
    • 2017-04-19
    • 2018-09-24
    • 2021-11-17
    • 1970-01-01
    相关资源
    最近更新 更多