2024年4月21日发(作者:)

第7章

Delphi的内存管理器

最小化内核中并不包含内存管理器,这表明使用最小化内核开发应用程序,与使

用汇编一样“原始”:需要使用标准的Win32 API来分配、使用和管理内存块。但是这

通常会存在效率问题,也可能会导致内存漏洞。

如果代码中使用到需要动态内存的数据类型,那么这些数据类型的内部例程将访

问Delphi的内存管理器。这些数据类型中就包括了AnsiString。这意味着绝大多数

的Delphi程序都需要内存管理器。

除了缺省的内存管理器外,Delphi还实现了和相应的内存管理模

块,以同步DLL与HOST程序中的内存管理器。

与缺省的内存管理器一样,共享内存管理器()并不是最有效率的。因

此某些时候,选择第三方的内存管理器可能会得到更好的性能。

开发人员随时可以写一个内存管理器来嘲笑一下那个叫的东西。但

在开始动手之前,请确认你已理解本章所述的全部细节,否则你可能不得不面对一次

次的进程崩溃,并无可奈何地在uses关键字的后面加入ShareMem。

知己知彼,才能无往不利。否则,笑到最后的还会是Borland。

7.1 Delphi的内存管理器实现框架

Delphi在中实现了自己的内存管理器。对于应用程序模块来说,除了变量、

常量和系统内存的数据结构之外,其他任何时候的内存分配行为,只可能是如下三种情况之一: