gpt4 book ai didi

c - 有没有办法测试指针的内存分配是否已被释放?

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

有没有办法告诉指针的内存分配已被释放?我刚刚开始使用 C,我想我终于开始理解 C 中内存管理的复杂性。

例如:

char* pointer;
pointer = malloc(1024);

/* do stuff */

free(pointer);

/* test memory allocation after this point */

我知道在我设置 pointer = NULL 之前指针仍会存储内存地址 - 但是有没有一种方法可以测试指针不再引用我可以使用的内存,而无需设置它首先为 NULL?

我想这样做的原因是我的 C 程序有一堆单元测试,其中一个确保在我调用一个特殊函数后没有孤立的指针,该函数执行几个链接的清理列出。查看调试器,我可以看到我的清理函数正在运行,但我想要一种测试指针的方法,以便我可以将它们包装在单元测试断言中。

最佳答案

没有标准化的内存管理可以告诉您任何给定地址是否是当前分配的内存块的一部分。

为了单元测试的目的,您可以创建一个全局映射来跟踪每个分配,这样您就可以让每个分配都通过您的自定义 malloc 函数,该函数将一个条目添加到映射中调试构建并在 free 中再次删除它。

关于c - 有没有办法测试指针的内存分配是否已被释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6066487/

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