テストケースをデバッグモードで実行しているときに問題があります。「Test.exeで0x7c812fd3の未処理例外:0xE0000003:0xe0000003」というメッセージがポップアップボックスに表示されます。 free.cのコードブレーク:ラインで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"
私はかなりのグーグルでグーグルしており、問題はメモリのセーヴレル時間を解放することから来るかもしれません。 このあいまいで厄介な記述にもかかわらず、誰も問題を見つける方法をヒントできますか?多分それを修正する方法?少し奇妙私を打つ何
がリリースモードでテストを実行しているとき、私はこれを経験していないということです...
敬具、 スヴェン
デバッグモードのみのエラーの通常の理由は、初期化されていない変数です。おそらく値を与えられていないポインタを解放しているかもしれません。 – john
リリースモードでは、これらのチェックは行われないため、デバッグモードで通知されるのはなぜですか(リリースでは問題が残っていますが、それ以上のバグは発生していないと幸いです)。あなたが書いた関数になるまでスタックトレースを上げて、何が間違っているのかを調べようとする(例えば、ダブルフリーであるか、実際に割り当てられていないアドレスを解放する)。 – Cameron
もう少し詳しく説明できますか?どのような種類のオブジェクトが解放されていますか?それはスマートなポインタですか? –