提升池malloc()和free()编译器错误

时间:2015-08-03 12:33:31

标签: c++ boost

我正在使用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();
}

抛出编译器错误。

1 个答案:

答案 0 :(得分:4)

来自Windows的

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标头之前。