gpt4 book ai didi

检查内存是否已在 C 中释放

转载 作者:太空宇宙 更新时间:2023-11-04 00:12:57 28 4
gpt4 key购买 nike

如您所知,在我们使用完动态变量后,我们将free()它们。

但是,有时这些变量已经是free()d。

我需要检查它是否空闲以避免双重空闲。谁能给我一个线索?

最佳答案

你不能检查它是否已经被free了(free 的签名应该告诉你这么多;它不能修改调用者的指针看法)。但是,您可以执行以下两项操作之一。

  1. 改变你的设计。谁负责这段内存?似乎您的设计并没有说清楚,这是内存泄漏的最常见原因。将所有权放在代码的一部分上并完成它。为什么中断函数会有条件地释放内存?为什么这看起来是最合乎逻辑的解决方案?

  2. 将指针设置为 null 并随心所欲地双倍释放。 free(NULL) 完全有效。


我更喜欢选项 1,现在学习本类(class)将帮助您在以后编写更好的代码。

关于检查内存是否已在 C 中释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28055297/

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