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

前端之家收集整理的这篇文章主要介绍了动态分配的内存如何在C中保持跟踪前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > How does free know how much to free?10个
我们使用malloc()在C中动态分配内存,并且我们收到指向堆中位置的指针.
现在我们使用free()来释放内存,传递与argumnet相同的指针值.

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

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

解决方法

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

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

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

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

原文链接:https://www.f2er.com/c/117388.html

猜你在找的C&C++相关文章