Управление памятью для инфраструктуры плагинов Delphi на основе TInterfacedClass

Для серверной инфраструктуры плагинов я хотел бы реализовать библиотеки DLL, которые предоставляют метод RegisterPlugin, который возвращает ссылку на класс (TInterfacedClass).

Хост-приложение затем создает экземпляр ( s) этого класса, и экземпляры будут работать в контексте хост-потока (ов). (Это отличается, например, от инфраструктуры подключаемых модулей Jedi VCL, которая создает экземпляр подключаемого модуля в DLL или BPL и возвращает экземпляр на хост.)

Первые тесты пока не выявили проблем. Однако, есть ли скрытые проблемы с управлением памятью, о которых я должен знать? Поскольку я использую Delphi 2009 для этого проекта, FastMM4 является диспетчером памяти по умолчанию.

Вот набросок проекта библиотеки DLL плагина:

library ExamplePlugin;
uses
  ...
type
  TPluginOne = class(TInterfacedObject, ...)
  ...
  end;

function RegisterPlugin: TInterfacedClass; stdcall;
begin
  Result := TPluginOne;
end;

exports
  RegisterPlugin;

{ TPluginOne }
// ... plugin class implementation

begin  
end.
6
задан mjn 27 March 2011 в 10:09
поделиться