作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有没有办法告诉指针的内存分配已被释放?我刚刚开始使用 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/
我是一名优秀的程序员,十分优秀!