Xdebug Errors: xdebug(32) : error C2365: 'operator new' : redefinition; previous definition was 'function'
2011-02-21 20:52
567 查看
今天合代码的时候,报了一堆如下的错误,折腾了半个小时才搞明白……
咋一看莫名其妙,后来仔细看了xdebug里面的代码,有如下的定义:
在_DEBUG下new被重定义了(用来检测内存泄漏),然后查了下自己的代码,发现也有new的新定义……,因为之前是从MFC下面迁移过来的代码:
杯具……又是混用MFC和标准库造成的。
解决方法也就明朗了。
方法一:把所有文件里面上面的那一堆“……#define new DEBUG_NEW……”全部删除
方法二:要么就保证使用了new的语句在上面的那一坨宏的前面。
个人建议还是全删了吧。
咋一看莫名其妙,后来仔细看了xdebug里面的代码,有如下的定义:
#if defined(_DEBUG) #define _NEW_CRT new(std::_DebugHeapTag_func(), __FILE__, __LINE__) #define _DELETE_CRT(ptr) std::_DebugHeapDelete(ptr) #define _DELETE_CRT_VEC(ptr) std::_DebugHeapDelete((void *)ptr) #define _STRING_CRT _DebugHeapString #include <crtdbg.h> #include <xmemory> #include <xstring> _MRTIMP2 __bcount(_Size) void * __cdecl operator new(size_t _Size, const std::_DebugHeapTag_t&, __in_z_opt char *, int) _THROW_BAD_ALLOC; // allocate from the debug CRT heap ……
在_DEBUG下new被重定义了(用来检测内存泄漏),然后查了下自己的代码,发现也有new的新定义……,因为之前是从MFC下面迁移过来的代码:
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
杯具……又是混用MFC和标准库造成的。
解决方法也就明朗了。
方法一:把所有文件里面上面的那一堆“……#define new DEBUG_NEW……”全部删除
方法二:要么就保证使用了new的语句在上面的那一坨宏的前面。
个人建议还是全删了吧。
相关文章推荐
- error C2660: 'Gdiplus::GdiplusBase::operator new' : function does not take 3 parameters
- 'new' : function does not take 3 parameters(转载)
- error C2660: 'new' : function does not take 3 parameters
- VS2005编译DLL错误,error C2491: 'CMyClass::Function' : definition of dllimport function not allowed
- 微软VC各版本BUG: error C2660: 'new' : function does not take 3 parameters
- VC GDI+: error C2660: 'new' : function does not take 3 parameters
- VS2008中使用GDI+(error C2660: 'new' : function does not take 3 parameters)
- Eclipse svn 报 Previous operation has not finished; run 'cleanup' if it was interrupted
- svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的暴力解决方法
- 错误error C2665: 'operator new' : none of the 5 overloads could convert all the argument types
- 'function': was declared deprecated
- 有自定义new的VC6转VC8(VS2005)出现 xdebug(32) : error C2365: operator new
- SVN-Previous operation has not finished; run 'cleanup' if it was interrupted
- 错误error C2665: 'operator new' : none of the 5 overloads could convert all the argument types
- Python标准库:内置函数open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=T
- src/box.cpp:151: undefined reference to `operator new[](unsigned int)'
- VC GDI+: error C2660: 'new' : function does not take 3 parameters
- <errors>'MessageBoxA' : function does not take 1 parameter
- SVN-previous operation has not finished run 'cleanup' if it was interrupted
- Previous operation has not finished; run 'cleanup' if it was interrupted