Работа над проектом, который использует фабрики для строительства объектов. Я сохраняю указатели на заводские функции в глобальном масштабе (плохо знаю) и регистрирую их при инициализации.
Недавно мне было интересно узнать, не было ли утечек памяти в проекте, поэтому решил загрузить FastMM4 и просмотреть его. Он обнаружил несколько ошибок, которые я мог исправить, но эта, на которой я немного озадачена, кажется, я не освобождаю память, связанную с фабрикой, как показано в коде ниже, у меня небольшая утечка памяти. Не смешно, но, тем не менее, раздражает.
Что бы я использовал, чтобы освободить память (если это так), я пытался избавиться (@factoryfunction), но, похоже, все испортил. Я не слишком хорошо разбираюсь в низкоуровневых указателях, и это всегда приводит меня в замешательство, так что если кто-то может помочь, это будет здорово.
Ниже приведен пример, который я только что записал на макушке головы, который иллюстрирует мою проблему.
Приветствия
Barry
unit Test;
interface
uses classes;
type
TAFactoryFunction = reference to function (const aType : integer): TObject;
function testfunction (const aType : integer) : TObject;
implementation
function testfunction(const aType: integer) : TObject;
begin
result := TObject.Create;
end;
var
FactoryFunction : TAFactoryFunction
initialization
FactoryFunction := testfunction;
finalization
// possibly some freemem code here?
end.