【发布时间】:2014-12-13 20:05:30
【问题描述】:
作为分配的一部分,我们必须实现一个(基本)malloc 函数(我们应该以某种方式模拟动态内存分配)。我已经实现了一个基于隐式空闲列表的解决方案,但问题是我得到了 50% 的利用率和 9% 的吞吐量(我必须得到 90% 的利用率+吞吐量)。隐式空闲列表的问题是搜索空闲块需要大量时间。所以我想实现explicit free list 看看这个程序能改进多少。现在的问题是我必须跟踪空闲块的下一个/上一个指针。而且由于我只能使用标量变量而不能使用任何类型的数据结构,例如:链表、结构、..,我无法实现它。有人能指出我如何在 C 中跟踪(虚拟)指针吗?
谢谢,
【问题讨论】:
-
你是什么意思“不能使用任何类型的数据结构,例如:链表”,但不知何故你可以有“下一个/上一个指针”?有些事情没有意义。
-
@luserdroog 所以我们不允许使用任何类型的数据结构。但是显式空闲列表会跟踪下一个/上一个空闲块。换句话说,显式空闲列表是一种算法,我必须实现它。explicity free lists
-
好的。所以你不能“使用(预先写好的)链表”,因为 这是 一个链表。对吗?
-
@luserdroog 是的。我想我现在明白了,我只需要保存一个带有地址(下一个或上一个块)的普通指针吗?
-
添加了答案。我赞成结构。
标签: c memory-management heap-memory