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

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

此消息来自何处?这是否意味着我的应用程序存在一些错误或内存泄漏?如何找到根本原因?

最佳答案

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

根据您的应用程序-较大的分配可能是错误,也可能不是错误。

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

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

关于c++ - 如何追踪 "tcmalloc : large alloc .... ",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9077457/

10-10 19:13