Я пытаюсь контролировать утечки памяти в моем коде.В моем общем заголовочном файле я добавил этот код:
// You may need to locate mem leaks
#define ZEL_CHECK_MEMORY_LEAKS
#ifdef ZEL_CHECK_MEMORY_LEAKS
#define _CRTDBG_MAP_ALLOC
#include <cstdlib>
#include <crtdbg.h>
#ifdef _DEBUG
#ifndef DBG_NEW
#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
#define new DBG_NEW
#endif
#endif // _DEBUG
#define zelInitMemoryCheck() \
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF)
#else
#define zelInitMemoryCheck()
#endif //ZEL_CHECK_MEMORY_LEAKS
Если я добавлю этот код, я получу эту ошибку компиляции:
1>c:\archivos de programa\microsoft visual studio 9.0\vc\include\xlocmon(283) : error C2061: syntax error : identifier '_DebugHeapTag_func'
1> c:\archivos de programa\microsoft visual studio 9.0\vc\include\xlocmon(281) : while compiling class template member function 'size_t std::moneypunct<_Elem,_Intl>::_Getcat(const std::locale::facet **,const std::locale *)'
1> with
1> [
1> _Elem=char,
1> _Intl=true
1> ]
1> c:\archivos de programa\microsoft visual studio 9.0\vc\include\xlocmon(908) : see reference to class template instantiation 'std::moneypunct<_Elem,_Intl>' being compiled
1> with
1> [
1> _Elem=char,
1> _Intl=true
1> ]
Кроме того, в моем исходном коде яиметь это включение:
#include "core/zelCoreLib.h"
#include <boost/shared_ptr.hpp>
Где код контроля утечки памяти находится в zelCoreLib.h
Для тех, у кого нет VC9.0, это код, который "не работает"
static size_t __CLRCALL_OR_CDECL _Getcat(const locale::facet **_Ppf = 0,
const locale *_Ploc = 0)
{ // return locale category mask and construct standard facet
if (_Ppf != 0 && *_Ppf == 0)
*_Ppf = _NEW_CRT moneypunct<_Elem, _Intl>(
_Locinfo(_Ploc->name()), 0, true);
return (_X_MONETARY);
}
Кажется, это часть строковых и локальных возможностей.Кроме того, в качестве дополнительной информации я использую библиотеки Lua и LuaBind
Любая помощь будет приветствоваться