有没有办法知道在Linux中传递给__free_hook的指针的大小?

Jer*_*rks 2 c linux malloc free hook

我想跟踪大型应用程序当前分配的内存量.

我发现我可以在malloc/free/realloc周围安装钩子以拦截内存分配调用:

http://man7.org/linux/man-pages/man3/malloc_hook.3.html

所以我要跟踪的是分配的总字节数 - 释放的总字节数.

现在问题是free只接受指针而不是大小.

In可以在我的malloc钩子中创建我自己的map或hashmap,它跟踪为该指针分配了多少内存,但这会导致相当多的开销.

有没有办法(即使它有点像黑客)在调用free时使用ptr的大小(使用默认的g ++ malloc)获得Linux(64位)的大小?

Fel*_*tti 5

linux man malloc_usable_size

malloc_usable_size()返回动态分配的缓冲区ptr中可用的字节数,该缓冲区可能大于请求的大小(但如果请求成功,则保证至少同样大).通常,您应该存储请求的分配大小,而不是使用此函数.