微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

动态分配的内存如何在C中保持跟踪

参见英文答案 > How does free know how much to free?10个
我们使用malloc()在C中动态分配内存,并且我们收到指向堆中位置的指针.
现在我们使用free()来释放内存,传递与argumnet相同的指针值.

现在的问题是free()如何知道取消分配多少…考虑到我们总是可以调整malloc()分配的内存块的事实.

这里有什么与哈希表相关的东西吗?

解决方法

最初的技术是分配一个稍大的块并在开头存储大小,这是应用程序没有看到的部分.额外的空间包含一个大小,并且可能链接到将空闲块连接在一起以便重用.

但是,这些技巧存在某些问题,例如缓存和内存管理行为不佳.在块中使用内存往往会不必要地对页面进行分页,并且还会创建脏页面,这使得共享和写入时复制变得复杂.

所以更先进的技术是保持一个单独的目录.还开发了外来方法,其中存储器区域使用相同的两个功率大小.

一般来说,答案是:分配一个单独的数据结构来保持状态.

原文地址:https://www.jb51.cc/c/117388.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐