gpt4 book ai didi

c - 已经释放内存

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

在 C 中有什么方法可以知道一个内存块之前是否已经被 free() 释放了?我可以做类似的事情吗?

if(isFree(pointer))
{
//code here
}

最佳答案

好的,如果您需要检查指针是否已被释放,您可能需要检查您的设计。您永远不必跟踪指针的引用计数或它是否已被释放。还有一些指针不是动态分配的内存,所以我希望你指的是用 malloc() 调用的指针。这是我的意见,但如果您有一个可靠的设计,您应该知道您的指针指向的东西何时被使用。

我看到这不起作用的唯一地方是在整体内核中,因为内存中的页面需要使用计数,因为共享映射等。

在您的情况下,只需将未使用的指针设置为 NULL 并进行检查。如果您在已分配的结构中有未使用的字段,这为您提供了一种有保证的了解方式。一个简单的规则是,无论您在哪里释放需要以上述方式检查的指针,只需将其设置为 NULL 并将 isFree() 替换为 if pointer == NULL。这样就不需要跟踪引用计数,并且您可以确定您的指针是否有效并且没有指向垃圾。

关于c - 已经释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6880578/

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