我们使用malloc()在C中动态分配内存,并且我们收到指向堆中位置的指针.现在我们使用free()来释放内存,传递与argumnet相同的指针值.
现在的问题是free()如何知道取消分配多少...考虑到我们总是可以调整malloc()分配的内存块的事实.
这里有什么与哈希表相关的东西吗?
最初的技术是分配一个稍大的块并在开始时存储大小,这是应用程序看不到的部分。额外的空间保存一定的大小,并可能链接到将空闲块连接在一起以供重用。
然而,这些技巧存在某些问题,例如缓存和内存管理行为不佳。在块中直接使用内存往往会不必要地分页,并且还会创建脏页,从而使共享和写时复制变得复杂。
所以更先进的技术是保留一个单独的目录。还开发了一些特殊的方法,其中内存区域使用相同的二次方大小。
一般来说,答案是:分配一个单独的数据结构来保存状态。
| 归档时间: |
|
| 查看次数: |
337 次 |
| 最近记录: |