我正在使用Boost 1.58 64位,VC ++ 2013,64位项目。使用boost :: pool。
之前使用的是Boost 1.54并且在调用时没有问题:
boost::pool malloc()
和
boost::pool free(p)
现在,两种方法都在抛出:
错误C2039:' _malloc_dbg' :不是会员 '升压::池'
和
错误C2039:' _free_dbg' :不是' boost :: pool'的成员
相应。
我是否会错过任何使编译器将malloc视为池类成员的指令?
更新
我看到它只发生在标题内联方法中。如果我在.cpp中调用它,我没有错误。
示例:
inline void* MemoryManager::AllocMemory(){
return m_pool->malloc();
}
抛出编译器错误。
答案 0 :(得分:4)
crtdbg.h
包含以下行:
#ifdef _CRTDBG_MAP_ALLOC
#define malloc(s) _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__)
#define calloc(c, s) _calloc_dbg(c, s, _NORMAL_BLOCK, __FILE__, __LINE__)
#define realloc(p, s) _realloc_dbg(p, s, _NORMAL_BLOCK, __FILE__, __LINE__)
...
尝试#undef _CRTDBG_MAP_ALLOC
修改:#define _AFX_NO_DEBUG_CRT
应阻止crtdbg.h
被包含在内。将其添加到项目设置中,或包括任何Windows标头之前。