如何追踪"tcmalloc:large alloc ...."

Sha*_*awn 7 c++ memory-management tcmalloc

我的应用程序打印几行如:

tcmalloc: large alloc 4294488064 bytes == 0x2b968d8000 @  0x727432 0x727302 0x727a58    0x75a07d 0x574beb 0x585756 0x5575df 0x5717db 0x57108f 0x58078c 0x302b80610a
tcmalloc: large alloc 4294488064 bytes == 0x2c97063000 @  0x727432 0x727302 0x727a58   0x75a07d 0x574beb 0x585756 0x5575df 0x5717db 0x57108f 0x58078c 0x302b80610a
tcmalloc: large alloc 4294488064 bytes == 0x2b968d8000 @  0x727432 0x727302 0x727a58 0x75a07d 0x574beb 0x585756 0x5575df 0x5717db 0x57108f 0x58078c 0x302b80610a
Run Code Online (Sandbox Code Playgroud)

这条消息来自哪里?这是否意味着我的应用程序有一些错误或内存泄漏?我该如何追查根本原因?

Ofi*_*fir 7

请参阅http://code.google.com/p/gperftools/source/browse/trunk/src/tcmalloc.cc?r=80&redir=1第843行

根据您的应用程序 - 大量分配可能是也可能不是错误.

在任何情况下 - @标记之后的部分是堆栈跟踪,可用于定位消息的来源

重复的数字(4294488064,似乎等于4G-479232或0x100000000-0x75000)使我怀疑原始分配调用得到负的有符号值并将其用作无符号值.

  • 谢谢,这非常有帮助.这个错误就像你说的那样,是由混合使用无符号和有符号值引起的 (2认同)