gpt4 book ai didi

c - 内存泄漏调试

转载 作者:太空狗 更新时间:2023-10-29 17:15:31 25 4
gpt4 key购买 nike

如果没有跟踪工具,有哪些检测/调试内存泄漏的技术?

最佳答案

拦截所有分配和释放内存的函数(根据平台的不同,列表可能是这样的:malloc、calloc、realloc、strdup、getcwd、free),除了执行这些函数原本做的事情外,保存有关的信息某处的调用,可能在动态增长的全局数组中,受多线程程序的同步原语保护。

此信息可能包括函数名称、请求的内存量、成功分配 block 的地址、让您了解调用者的堆栈跟踪等。在 free() 中,从数组中删除相应的元素(如果没有,则将错误的指针传递给 free,这也是一个可以及早检测到的错误)。当程序结束时,转储数组的剩余元素——它们将是泄漏的 block 。不要忘记分别在 main() 之前和之后分配和释放资源的全局对象。为了正确计算这些资源,您需要在最后一个全局对象被销毁后转储剩余资源,因此可能需要对编译器运行时进行一些小改动

关于c - 内存泄漏调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1473609/

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