首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >让你自己的malloc函数?

让你自己的malloc函数?
EN

Stack Overflow用户
提问于 2011-01-16 12:20:32
回答 6查看 4.1K关注 0票数 10

我读到一些游戏重写了他们自己的malloc以提高效率。我不明白在虚拟内存的世界里这怎么可能。如果我没记错的话,malloc实际上调用了一个特定于操作系统的函数,该函数使用MMU将虚拟地址映射到真实地址。那么,如何在不调用实际运行时的malloc的情况下,创建自己的内存分配器并分配实际内存呢?

谢谢

EN

Stack Overflow用户

发布于 2011-01-16 12:30:19

通常,malloc将调用特定于操作系统的函数来获取一堆内存(至少一个VM页面),然后根据需要将内存划分为更小的块,以返回给malloc的调用者。

malloc库还将有一个(或多个)空闲块列表,因此它通常可以满足请求,而无需请求操作系统提供更多内存。确定要处理多少不同的块大小,决定是否尝试组合相邻的空闲块,等等,这些都是malloc库实现者必须做出的选择。

您可以绕过malloc库,直接调用操作系统级别的“给我一些内存”函数,并在从操作系统获得的内存中进行自己的分配/释放。这样的实现可能是特定于操作系统的。另一种选择是使用malloc进行初始分配,但要维护自己的已释放对象缓存。

票数 3
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4703775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档