我刚刚发现隐藏的宝石crtdbg.h
,这使得内存泄漏检测变得更加容易。不幸的是,当我今天将DirectX链接到我的程序中时,我遇到了一些我以前从未见过的错误。
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.h(425): error C2059: syntax error : 'constant'
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.h(425): error C2091: function returns function
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.h(425): error C2802: static member 'operator new' has no formal parameters
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.h(426): error C2059: syntax error : 'constant'
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.h(426): error C2090: function returns array
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.inl(1003): error C2761: 'void *(__cdecl *_D3DXMATRIXA16::operator new(void))(size_t)' : member function redeclaration not allowed
1>e:\program files (x86)\microsoft directx sdk (june 2010)\include\d3dx10math.inl(1003): fatal error C1903: unable to recover from previous error(s); stopping compilation
似乎当crtdbg覆盖new运算符时,它会破坏DirectX SDK中的某些内容(如果您没有注意到错误,我使用的是DirectX 11 SDK)。有这样的记录吗?一些搜索没有产生任何结果。我真的希望我能继续使用这些内存调试工具,并且非常感谢任何变通办法!
答案 0 :(得分:1)
好的,我明白了。我发现this post via Google.(我希望Stack Overflow在我打字的时候在侧边栏上向我展示了它!或许它确实如此,我错过了它......)。
基本上,我需要将crtdbg.h
,stdlib.h
的内容和_CRTDBG_MAP_ALLOC
的定义移到单独的标题中,然后使用下的Forced Include File
选项C / C ++ >>项目属性页面中的高级强制包含文件无处不在。这似乎使它覆盖所有其他new
覆盖。