c ++未处理的异常 - 如何调试

时间:2013-05-01 15:41:53

标签: c++ heap unhandled-exception

在调试模式下运行测试用例时出现问题:我收到一个弹出框,其中显示消息“Test.exe中0x7c812fd3处的未处理异常:0xE0000003:0xe0000003。”。代码在free.c中断:

void __cdecl _free_base (void * pBlock)
{
    int retval = 0;

    if (pBlock == NULL)
        return;

    RTCCALLBACK(_RTC_Free_hook, (pBlock, 0));

    retval = HeapFree(_crtheap, 0, pBlock);
    if (retval == 0)
    {
        errno = _get_errno_from_oserr(GetLastError());
    }
}

在“retval = ...”行,_crtheap = 0x00df0000和pBlock = 0x967c93d3。调用堆栈在“kernel32.dll!7c812fd3()”和调用堆栈中的另一个条目中断: “> msvcr100d.dll!_free_base(void * pBlock = 0x967c93d3)第50行+ 0x13字节”。

我已经搜索过相当多的问题,问题可能来自于释放内存的时间。 尽管这种模糊和凌乱的描述可以任何人提示如何找到问题?也许如何解决它?

令我感到有点奇怪的是,在发布模式下运行测试时我没有遇到这种情况......

亲切的问候, 斯文

1 个答案:

答案 0 :(得分:-3)

您是否尝试在visual studio调试器下运行这些测试用例? 调试器应该捕获此异常,您可以验证调用堆栈并找出问题所在。