0

TCMalloc 是一个非常适合多线程使用的堆管理器(在我的例子中是 OpenMP)。使用 tcmalloc 启动并运行 linux、windows、32 位的所有内容非常容易,但现在我完全被 win-64 卡住了:

  • 我使用 VS2012 构建的动态链接 x64 libtcmalloc-minimal
  • 一切都链接得很好,程序启动得很好,{ new, malloc, realloc, free } 工作得很好
  • 第一次调用 delete 或 delete [] 时,程序崩溃,因为 std 库(在 dbgdel.cpp 中)中的 delete 运算符在以下行中被调用:

    _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));

  • 我尝试使用所有内容的发布版本(因为 dbgdel.cpp 运算符仅在定义 _DEBUG 时使用)但没有运气

任何帮助是极大的赞赏。

4

1 回答 1

0

我想分享我找到的解决方案(我的错误):

在项目中的一个链接库中,我忘记了发布版本中的“_DEBUG”预处理器宏。删除它解决了这个问题。

于 2013-06-03T14:52:47.947 回答