我很想知道如何在重载(Linux平台)下基于C / C++的产品中检测到内存泄漏。

我知道Valgrind在发现内存泄漏,无效访问等方面做得很好。

但是对于valgrind,产品需要在低负载下运行。使用valgrind,您不能指望在高负载下运行产品。

在高负载下,产品代码执行路径可能会不同。在这种情况下,如果存在内存泄漏,如何解决该内存泄漏。

有没有这样的工具?

最佳答案

请按照以下步骤覆盖系统功能。
1.制作自己的.so文件,实现系统功能
2.使用LD_PRELOAD在系统中预加载.so文件
3.就这样,之后,当我执行任何程序时,都调用了自定义函数而不是系统函数。

但是我有一个问题,即递归调用。
调用自定义函数时,内部调用系统函数,再次调用我的函数,依此类推...

要停止它,我没有直接调用系统功能。相反,我搜索如下

static void * (*func)();
if(!func)
    func = (void *(*)()) dlsym(RTLD_NEXT, "malloc");

return(func(size));

感谢所有人帮助解决此问题。

关于c++ - 重载下C/C++中的内存泄漏检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32503393/

10-13 08:29