gpt4 book ai didi

memory - 如何记录 malloc

转载 作者:行者123 更新时间:2023-12-04 22:02:42 25 4
gpt4 key购买 nike

这有点假设并且非常简化,但是......

假设一个程序将调用第三方编写的函数。这些当事方可以被认为是非敌对的,但不能被认为是“有能力的”。每个函数都会接受一些参数,有副作用并返回一个值。它们在不运行时没有状态。

目标是通过记录所有 malloc(等)并在函数退出后释放所有内容来确保它们不会导致内存泄漏。

这可能吗?这实用吗?

p.s.对我来说重要的部分是确保没有分配持续存在,因此在不这样做的情况下消除内存泄漏的方法对我没有用。

最佳答案

您没有指定操作系统或环境,此答案假定 Linux、glibc 和 C。

您可以设置 __malloc_hook、__free_hook 和 __realloc_hook 指向将分别从 malloc()、realloc() 和 free() 调用的函数。有一个 __malloc_hook 手册页显示了原型(prototype)。您可以在这些钩子(Hook)中添加轨道分配,然后返回让 glibc 处理内存分配/释放。

听起来您想在第三方函数返回时释放任何实时分配。有一些方法可以让 gcc 使用 -finstrument-functions 在每个函数入口和退出时自动插入调用,但我认为这对于你想要做的事情是不优雅的。在调用这些第三方函数之一后,您可以让自己的代码调用内存跟踪库中的函数吗?然后,您可以检查是否有任何第三方功能尚未释放的分配。

关于memory - 如何记录 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50829/

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