Работал над проектом, в котором для создания объектов используются фабрики. Я храню указатели на фабричные функции в варах по всему миру (плохо знаю) и регистрирую их при инициализации.
Недавно мне было интересно узнать, есть ли в проекте утечки памяти, поэтому я решил скачать FastMM4 и посмотреть.Было обнаружено несколько ошибок, которые я мог исправить, но эта, которую я немного озадачила, кажется, не освобождает память, связанную с фабрикой, как показано в приведенном ниже коде. У меня небольшая утечка памяти. Не смешно, но, тем не менее, раздражает.
Что бы я использовал для освобождения памяти (если это так) Я пытался удалить (@factoryfunction), но, похоже, все испортил. Я не слишком хорошо разбираюсь в низкоуровневых указателях, меня всегда чертовски смущает, так что если бы кто-то мог помочь, это было бы здорово.
Я привел пример ниже, который я только что записал, который иллюстрирует мою проблему.
Ура,
Барри
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.