【发布时间】:2012-08-08 00:06:36
【问题描述】:
如何创建一个用 C 语言定义的新 malloc() 函数?
我什至没有关于如何做到这一点的精灵提示,如何将虚拟空间地址与物理空间映射,遵循什么算法?我确实知道 malloc() 效率不高,因为它会导致碎片。所以可以创造一些有效的东西。即使效率不高,如何实现一个朴素的 C malloc 函数?
最近在采访中被问到。
【问题讨论】:
-
您需要特定于操作系统的 API。此外,我想知道为什么 malloc 效率低下..
-
在 K&R 接近尾声的某个地方有一个相当不错的实现。
-
我认为小分配效率低
-
@Thrustmaster:在许多领域,malloc 的默认实现不如许多平台的自定义实现高效。例如,对于高度并发的应用程序,尝试避免错误共享的实现可以显着提高性能。针对目标平台优化的实现也可以比通用实现(例如嵌入式设备与高内存服务器)更高效。
-
@Thrustmaster:添加了一个答案,其中包含一个非常相关的 Wikipedia 条目的摘要。它概述了 malloc 实现尝试优化的不同类型的事物。那篇 Wikipedia 文章是深入了解 malloc 世界的绝佳起点。
标签: c memory-management operating-system malloc