- ベストアンサー
メモリーリークの検出方法
- WindowsXP,VC++6.0環境においてメモリーリークを検出する方法について調査しました。
- _CrtSetDbgFlagを使用してメモリーリークを検出しようとしたが、正確なファイル名が表示されない問題が発生しました。
- 短いコードでは正しく表示されるため、他の原因を考える必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。一応VC++6.0にて確認は出来たので以下サンプルを。 +--------------------test.hpp-----------------------+ #ifndef __TEST_HPP__ #define __TEST_HPP__ #include<cstdlib> #include<new> #include<memory> using namespace std; #include <crtdbg.h> #define _CRTDBG_MAP_ALLOC #define new ::new(_NORMAL_BLOCK, __FILE__, __LINE__) extern void TestB(); #endif +--------------------test.hpp-----------------------+ +--------------------testA.cpp----------------------+ #include"test.hpp" void TestA() { new int; _CrtDumpMemoryLeaks(); } int main() { ::TestA(); ::TestB(); return 0; } +--------------------testA.cpp----------------------+ +--------------------testB.cpp----------------------+ #include"test.hpp" void TestB() { new int; _CrtDumpMemoryLeaks(); } +--------------------testB.cpp----------------------+
お礼
回答ありがとうございます. 無事解決しました. お恥ずかしながら原因は,メモリーリーク検出初期設定をmain関数のあるソースでしか行っていなかったためでした. 本当にありがとうございました(^-^;)