0

MS VC++ 2005 プロジェクトでヒープ デバッグを有効にし、プログラムが最後のデストラクタから終了するときに、そこで _CrtDumpMemoryLeaks() を呼び出しました (_CRTDBG_MAP_ALLOC も有効にしました)。しかし、次のデバッグ アサーション画面が表示されました。

ここに画像の説明を入力

その後、Retry を押してデバッグすると、次のようなコードが表示されます (これは私のものではありません)。

char* name;
cstub.get("...", name);
delete [] name; 

おそらく名前が get(..) 関数内で割り当てられたのではないかと考えています。とにかく、私の質問は: スクリーン ショットから、これはメモリ/ヒープのバグですか? おそらく、cstub の get 関数が何をしているかを掘り下げる必要があります。アイデアをありがとう。

4

1 に答える 1

1

ランタイムが混在している可能性があります。

アロケーターが、別のバージョンの Visual Studio でコンパイルされた DLL 内にある場合、コードからメモリを解放できません。

これが、割り当てられたメモリを返すライブラリに、そのメモリを解放する関数またはメソッドも含まれている理由です。

于 2012-06-14T22:20:40.250 に答える