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) Line 50 + 0x13 bytes"。

私はかなりグーグルで検索しましたが、問題はメモリを解放することから発生する可能性があります。この曖昧で厄介な説明にもかかわらず、誰でも問題を特定する方法を示すことができますか? おそらくそれを修正する方法は?

少し奇妙に感じるのは、リリースモードでテストを実行しているときにこれが発生しないことです...

よろしく、 スヴェン

4

1 に答える 1

-3

Visual Studio デバッガーでこれらのテストケースを実行しようとしましたか? デバッガーはこの例外をキャッチする必要があり、コール スタックを確認して問題の場所を特定できます。

于 2013-05-01T16:42:19.253 に答える