FastMM4options.inc
ファイル からの抜粋。
私にとっては、すべてのパッケージ、dll、および実行可能ファイルがShareMMでコンパイルされている場合、Delphi7sのデフォルトのメモリマネージャーを置き換えることができるはずです。
{-----------------------メモリマネージャの共有オプション---------------------- -}
{メインアプリケーションと、FastMMでコンパイルされたDLLとの間でメモリマネージャーを共有できるようにします。これにより、FastMMを使用するようにコンパイルされている場合、動的配列と長い文字列をDLL関数に渡すことができます。共有は、メモリマネージャを共有することになっているライブラリが「AttemptToUseSharedMM」オプションセットでコンパイルされている場合にのみ機能します。メインアプリケーションがシングルスレッドでDLLがマルチスレッドの場合、メインアプリケーションのIsMultiThread変数をtrueに設定する必要があります。そうしないと、スレッドの競合が発生したときにクラッシュします。静的にリンクされたDLLファイルはメインアプリケーションの前に初期化されるため、メインアプリケーションは静的にロードされたDLLのメモリマネージャーを共有することになり、その逆ではないことに注意してください。}
{。$defineShareMM}
{DLLによるメモリマネージャの共有を、FastMMでコンパイルされた他のDLL(または静的にロードされたDLLの場合はメインアプリケーション)と許可します。動的にロードされるDLLでは、このオプションを慎重に設定してください。MMを共有しているDLLがアンロードされ、他のDLLがまだMMを共有している場合、アプリケーションがクラッシュするためです。この設定はDLLライブラリにのみ関連し、ShareMMも効果を発揮するように設定する必要があります。共有は、メモリマネージャを共有することになっているライブラリが「AttemptToUseSharedMM」オプションセットでコンパイルされている場合にのみ機能します。DLLが静的にリンクされている場合、DLLはメインアプリケーションの前に初期化され、DLLは実際にそのMMをメインアプリケーションと共有することに注意してください。
{。$defineShareMMIfLibrary}
{これを定義して、ShareMMセットでコンパイルされた同じプロセスでメインアプリケーションまたは他のロードされたDLLのMMを共有しようとします。メモリマネージャを共有する場合、共有者によって引き起こされたメモリリークは自動的に解放されません。静的にリンクされたDLLはメインアプリケーションの前に初期化されることを考慮に入れて、それに応じて共有オプションを設定してください。}
{。$defineAttemptToUseSharedMM}
{これを定義して、Delphi 2006および2007、および古いFastMMバージョンで使用されているメモリマネージャ共有メカニズムの下位互換性を有効にします。}
{$ define EnableBackwardCompatibleMMSharing}