テストケースをデバッグ モードで実行すると問題が発生します。「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) Line 50 + 0x13 bytes"。
私はかなりグーグルで検索しましたが、問題はメモリを解放することから発生する可能性があります。この曖昧で厄介な説明にもかかわらず、誰でも問題を特定する方法を示すことができますか? おそらくそれを修正する方法は?
少し奇妙に感じるのは、リリースモードでテストを実行しているときにこれが発生しないことです...
よろしく、 スヴェン