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