代码之家  ›  专栏  ›  技术社区  ›  zhengtonic

如何在VC++6中调试“调试断言失败”

  •  1
  • zhengtonic  · 技术社区  · 16 年前

    我想知道如何调试以下错误:

    Debug Assertion failure
    
    Program: tomtoprog.exe
    File: dbgheap.c
    Line: 1044
    
    Expression:_CrtIsValidHeapPointer(pUserData)
    ...
    

    我对用VC++6开发Windows很陌生…有没有勇气或者类似的东西?Tomtoprog代码不是我写的,它相当混乱…所以像Valgrind这样的东西会让我的生活更轻松…

    事先谢谢!

    最好的问候,

    正宗

    2 回复  |  直到 15 年前
        1
  •  3
  •   Community    7 年前

    看起来您要么有堆损坏,要么正在用同一指针执行双重释放。如果闯入调试器,那么断言发生时调用的代码的最后一行是什么?

    检查此类问题的最佳方法是使用类似于 PageHeap.exe

    另请参阅有关堆栈溢出的相关问题

    Heap corruption under Win32; how to locate?

        2
  •  2
  •   Roger Lipscombe    16 年前

    点击“重试”,它将进入调试器。这将为您提供调用堆栈。从那里,您可以找到代码中有问题的部分。

    提示:您可能删除/释放了两次。