gpt4 book ai didi

c++ - 重负载下 C/C++ 中的内存泄漏检查

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:49:04 25 4
gpt4 key购买 nike

我很想知道在重负载(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com