7

在调试模式下运行测试用例时遇到问题:我收到一个弹出框,显示消息“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 字节“。

我用谷歌搜索了很多,问题可能来自释放内存严重时间。尽管有这种模糊和混乱的描述,任何人都可以暗示如何定位问题吗?也许如何解决它?

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

亲切的问候,斯文德

4

1 回答 1

-3

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

于 2013-05-01T16:42:19.253 回答