Visual Studio 2005/2008 でメモリリークの検出方法に関して、

MSDNに以下のような記述があります。
http://msdn.microsoft.com/ja-jp/library/e5ewb1h3(VS.80).aspx

この方法を使って、

#define _CRTDBG_MAP_ALLOC
#include <stdlib .h>
#include <crtdbg .h>
#include <map>

static std::map<std ::string, std::string> sMap;

int main(int argc, char* argv[])
{
  _CrtDumpMemoryLeaks();
  return 0;
}

このようなプログラムを書くと、「メモリリークが検出された」と表示されます。どうやら、実際にはメモリリークは起こってはいないようなのです…。

一方で、

_CrtSetDbgFlag (
  _CRTDBG_ALLOC_MEM_DF |
  _CRTDBG_LEAK_CHECK_DF );

を使うと、メモリリークは検出されませんので。ただのバグなのでしょうか?

Comments

comments

Powered by Facebook Comments

Comments are closed.