【发布时间】:2010-12-03 00:28:08
【问题描述】:
我正在调查由于堆损坏而导致的崩溃。由于这个问题很重要并且涉及分析堆栈和转储结果,因此我决定对与崩溃相关的文件进行代码审查。
坦率地说,我对堆何时可能损坏没有深入的了解。
如果您能提出可能导致堆损坏的方案,我将不胜感激。
平台:Windows XP
语言:C++
编译器:VC6
【问题讨论】:
-
嗯,可能有点笼统...建议您提供更多(以及一些)详细信息...
-
您的问题缺少很多细节。你能指定平台和上下文吗?
-
我已经使用 Compuware 的 BoundsChecker 成功追踪了一些奇怪的内存错误。它不是免费的,但我发现它非常有用,尤其是对于追踪一些非常模糊的错误。
-
不可能为此提供代码示例。您不妨问“无法编译的代码是什么样的”。有无数种可能性。编程 C++(或任何其他语言)的关键是遵守该语言允许的内容。你不能反其道而行之,试着编译一个列表“只要我不做这些事情,我的代码就是有效的C++”
-
大多数情况下,如果您的代码部分似乎对损坏堆有怀疑,您可以插入 _heapchk(请参阅msdn.microsoft.com/en-us/library/aa298379%28VS.60%29.aspx)来检查堆是否仍然正常或已经损坏。
标签: c++ memory-management