在调试模式下运行测试用例时出现问题:我收到一个弹出框,其中显示消息“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字节”。
我已经搜索过相当多的问题,问题可能来自于释放内存的时间。 尽管这种模糊和凌乱的描述可以任何人提示如何找到问题?也许如何解决它?
令我感到有点奇怪的是,在发布模式下运行测试时我没有遇到这种情况......
亲切的问候, 斯文
答案 0 :(得分:-3)
您是否尝试在visual studio调试器下运行这些测试用例? 调试器应该捕获此异常,您可以验证调用堆栈并找出问题所在。