在C ++中定制实现malloc

我遇到了一个采访问题,他们要求在C ++中实现malloc()和free函数。

最初声明一个大小为50000的字符数组(50000字节)。 假设这是堆内存,请编写malloc和free函数来分配内存块并释放内存。

任何人都可以提供给我C ++工作/伪代码或者只是解释机制? (显然,代码会使它更容易理解)。

谢谢,Rohit


编写生产级动态内存分配器是一项非常艰巨的任务,编写一个玩具很简单。 这个问题显然是为了测试你的技能,但在别人的作品中寻找灵感还是公平的。

Kernighan&Ritchie的“C程序设计语言”包含一个简单的malloc实现。 研究它并考虑其设计和实施的含义。 考虑如何改进它以更好地执行,减少片段或处理多个线程。 之后,编写自己的玩具分配器不再困难,并且回答出现的任何问题。


有几种不同的算法可以使用。 对于这样一个小内存,我只需在每个块的前面加上一个指向下一个块的指针,以及一个表示它是被分配还是释放的标志。 分配包括找到一个足够大的空闲块,在必要时将其分开,并将返回的块标记为已分配。 一个免费的标记块是免费的。 在某些情况下,您还必须合并块:如果两个空闲块相互跟随,则合并为一个块。 (我在分配过程中在执行过程中执行了此操作。)

上述算法本身并不十分困难。 真正的诀窍是获得所有不同的演员等等权利。 在低级别编程中这是一项很好的练习。


我之前没有测试过它,但我认为可以通过使用新的关键字和模板来支持通用状态来创建所需类型的数组,但我会按照这个问题来找出C ++英雄的响应。

链接地址: http://www.djcxy.com/p/80435.html

上一篇: Custom implementation of malloc in C++

下一篇: How is heap usually implemented?