这是之前一个问题的子集。
作为一项练习,我正在编写一个内存管理器 - 也就是实现malloc、realloc和free(或new和delete)的代码。我的语言Delphi的RTL 允许轻松替换RTL的内存管理器。对于使用C++的人来说,这类似于但比覆盖new和delete更低级(它钩入了RTL本身而不是成为一种语言特性)。
我正在寻找关于其他人采取的高质量方法相同问题的资源,并试图找出其他主要编译器供应商使用的算法。虽然Delphi的实现有很好的文档,但我找不到任何有关MS VC++、.Net或Objective C使用的实现的信息。这些供应商似乎不允许像Delphi那样钩入其RTL。所有文档似乎都更高级,例如NSAutoReleasePool
,这对于这个问题来说太高级了。
这些主要供应商(Microsoft VC++和.Net以及Apple Objective C)在其运行时库中使用哪些内存管理算法?
- Embarcadero Delphi和C ++ Builder有很好的文档记录。
- Linux似乎使用Buddy算法,但我怀疑这个信息已经过时。
- MS VC++:未知。
- .Net:未知。
- Objective C:未知。
一个很好的答案示例是描述内存管理器实现的文档,例如this one,或者链接到已发布的论文。一个有用答案示例是算法,“VC++运行时使用Hoard分配器”。