为什么我的代码在ifstream.close上崩溃了? (C ++,VS2010)

时间:2011-06-01 13:34:12

标签: c++ visual-studio-2010

  

可能重复:
  Why would fclose hang / deadlock? (Windows)

当我打电话时.close我遇到了崩溃。 enter image description here

我所做的是保存文件,关闭文件并立即加载。这是出于调试原因,看看我的序列化代码是否正常工作(它有很多检查并且都通过了)

我做了一些调试,我无法弄清楚可能导致它的原因。我注意到的是

  • 它在特定文件上崩溃
  • 单独运行文件不会崩溃
  • 删除多个文件会降低崩溃的几率(但我不确定它是否相关)。从100%到50%或30%,具体取决于我删除了多少。
  • 我的文件越少,发生的可能性就越小。但它总是发生在该特定文件上,无论文件数量多少
  • 其他文件也会崩溃,但是在不同的蝙蝠系列中
但是,打扰我的是什么 - 文件似乎正确加载。我输入了一个调试计数器,它增加了正确的次数。 - 文件句柄仅对一个函数有效。该函数加载它会关闭文件并返回解析后的数据。为什么它会受到蝙蝠系列中其他文件的影响

在发布模式下如果我在VS IDE中运行文件就可以了。当我按ctrl F5在外面跑,它崩溃了。但是在IDE之外运行单个文件也很好。

我很困惑。

1 个答案:

答案 0 :(得分:1)

正如Ben Voigt所说,它可能是程序中其他地方的问题(可能在一个看似无关的地方),而不是ifstream :: close()本身。堆栈溢出(问题,不是这个站点),任性指针,写入数组的末尾 - 这些是这些问题的常见原因。