質問: c++のnewで確保したメモリーの解放の確認方法 c++で作成中のプログラムの一部で、長い文章も処理できるように、構造体とメモリーの動的確保を使用しています。 ただ、動的に確保したメモリーは自分で解放しなくてはならないのですが、プログラムが単純なうちは開放のミスを発見できますが、長くなるとバグで一部開放されない可能性も捨てきれません。 そのようなときに全て開放できたか確認する方法は無いのでしょうか? 開発環境につきましては、 os windowsxp homeedition コンパイラ bcc 言語 c++ コンソールアプリケーション struct string { char str[512]; struct string* nextstr;}; 簡単には、このような構造体を new で確保し、開放は、先頭から delete してますが、 構造体がこれより結構複雑なため、処理部が長くきちんと開放できているか自信が有りません。
回答: newやdeleteをdefineで括ってまとめて監視してはどうですか? extern int g_count; #define newobject(t) new (t); g_count++ #define deleteobject(ptr) delete (ptr) ; g_count-- int g_count; //ここのstringは自分で定義した構造体 string *p = newobject(string); deleteobject(p); printf("メモリ確保数=%d",g_count); のようにするとか、 リリース版の時は #define newobject(t) new (t) #define deleteobject(ptr) delete (ptr) とすれば余計の処理も消えますし。