文件摘录FastMM4options.inc
。
对我来说,这意味着如果你所有的包、dll 和可执行文件都是用 ShareMM 编译的,那么应该可以替换 Delphi 7s 的默认内存管理器。
{------------------------------------内存管理器共享选项---------- --}
{允许在主应用程序和同样使用 FastMM 编译的 DLL 之间共享内存管理器。这允许您将动态数组和长字符串传递给 DLL 函数,前提是它们都被编译为使用 FastMM。只有在使用“AttemptToUseSharedMM”选项集编译应该共享内存管理器的库时,共享才会起作用。请注意,如果主应用程序是单线程的并且 DLL 是多线程的,则您必须将主应用程序中的 IsMultiThread 变量设置为 true,否则会在发生线程争用时崩溃。请注意,静态链接的 DLL 文件在主应用程序之前初始化,因此主应用程序很可能最终共享一个静态加载的 DLL 的内存管理器,而不是相反。}
{.$define ShareMM}
{允许 DLL 与同样使用 FastMM 编译的其他 DLL(或主应用程序,如果这是一个静态加载的 DLL)共享内存管理器。在动态加载的 DLL 中设置此选项时要小心,因为如果共享其 MM 的 DLL 被卸载并且任何其他 DLL 仍在共享 MM,那么应用程序将崩溃。此设置仅与 DLL 库相关,并且还需要设置 ShareMM 才能生效。只有在使用“AttemptToUseSharedMM”选项集编译应该共享内存管理器的库时,共享才会起作用。请注意,如果 DLL 是静态链接的,那么它们将在主应用程序之前初始化,然后 DLL 实际上将与主应用程序共享其 MM。
{.$define ShareMMIfLibrary}
{定义此项以尝试在使用 ShareMM 集编译的同一进程中共享主应用程序的 MM 或其他加载的 DLL。共享内存管理器时,共享器导致的内存泄漏不会自动释放。考虑到静态链接的 DLL 在主应用程序之前初始化,因此请相应地设置共享选项。}
{.$define AttemptToUseSharedMM}
{定义此项以启用 Delphi 2006 和 2007 以及较旧的 FastMM 版本使用的内存管理器共享机制的向后兼容性。}
{$define EnableBackwardCompatibleMMSharing}