c – 包含STL头文件时出现问题
发布时间:2020-12-16 09:36:30 所属栏目:百科 来源:网络整理
导读:我在MFC(VS 2008)中创建了基于Dialog的应用程序.当我在Dlg.cpp中执行“#include”时,它显示以下错误. VS 2008安装中是否缺少某些组件 c:program files (x86)microsoft visual studio 9.0vcincludexmemory(43) : error C2665: 'operator new' : none of
我在MFC(VS 2008)中创建了基于Dialog的应用程序.当我在Dlg.cpp中执行“#include”时,它显示以下错误.
VS 2008安装中是否缺少某些组件 c:program files (x86)microsoft visual studio 9.0vcincludexmemory(43) : error C2665: 'operator new' : none of the 5 overloads could convert all the argument types 1> c:program files (x86)microsoft visual studio 9.0vcincludenew.h(85): could be 'void *operator new(size_t,const std::nothrow_t &) throw()' 1> c:program files (x86)microsoft visual studio 9.0vcincludenew.h(93): or 'void *operator new(size_t,void *)' 1> while trying to match the argument list '(const char [70],int)' 1> c:program files (x86)microsoft visual studio 9.0vcincludexmemory(145) : see reference to function template instantiation '_Ty *std::_Allocate<char>(size_t,_Ty *)' being compiled 1> with 1> [ 1> _Ty=char 1> ] 1> c:program files (x86)microsoft visual studio 9.0vcincludexmemory(144) : while compiling class template member function 'char *std::allocator<_Ty>::allocate(std::allocator<_Ty>::size_type)' 1> with 1> [ 1> _Ty=char 1> ] 1> c:program files (x86)microsoft visual studio 9.0vcincludexstring(2216) : see reference to class template instantiation 'std::allocator<_Ty>' being compiled 1> with 1> [ 1> _Ty=char 1> ] 1>Build log was saved at "file://c:UsersPublicDocumentsProjSTL1STL1DebugBuildLog.htm" 1>STL1 - 1 error(s),0 warning(s) ========== Build: 0 succeeded,1 failed,0 up-to-date,0 skipped ========== 解决方法
在您的MFC项目中包含的任何STL都应包含在DEBUG_NEW的定义之前.这在过去是一个问题(似乎不再是,因为我无法在VS 2010中重现它).
// myfile.cpp #ifdef _DEBUG #define new DEBUG_NEW #endif // This will cause the error #include <vector> 而 // myfile.cpp // will work OK #include <vector> #ifdef _DEBUG #define new DEBUG_NEW #endif DEBUG_NEW是一个特定于Microsoft的扩展,有助于在应用程序的调试版本中查找内存泄漏.在某些情况下它可能非常有用. 它在afx.h中定义为: void* AFX_CDECL operator new(size_t nSize,LPCSTR lpszFileName,int nLine); #define DEBUG_NEW new(THIS_FILE,__LINE__)` 提供对已分配内存的跟踪以及检测到泄漏时,将为您提供分配所在的文件和行号. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |