【发布时间】:2020-10-08 07:01:17
【问题描述】:
我的 c++ 程序的 RAM 稳步增加,但是这些分配不是泄漏,因为它们在程序终止时被正确整理(我没有收到 AddressSanitizer 报告的泄漏)。我正在使用第三方库,在那里我看不到源代码,我怀疑分配来自那里。我可以使用 AddressSanitizer 以某种方式记录所有 malloc 调用,类似于 perf 记录吗?我不能使用 perf 和 valgrind。
【问题讨论】:
-
在 linux 中,您可能会使用 shadow malloc,因为它在 libc 中是一个弱符号。这意味着,创建一个小库,它公开了 malloc 的定义,该定义记录然后调用真正的 malloc。在 linux 中,您将使用 LD_PRELOAD 使 ld 优先考虑此库并在动态链接程序时获取 malloc 的定义
标签: c++ linux heap-memory address-sanitizer