Проблема С Памятью Delphi (FastMM4)
работа над проектом, использующим фабрики для создания объектов. Я сохраняю указатели на заводские функции в vars глобально (плохо, я знаю) и регистрирую их при инициализации.
недавно мне было интересно узнать, есть ли у проекта утечки памяти, поэтому я решил загрузить FastMM4 и посмотреть. Он придумал несколько ошибок, которые я мог бы исправить, но этот я немного озадачен, как кажется мне, не освобождая память о заводе, как показано в коде ниже я небольшая утечка памяти. Не смешно,но раздражает.
что бы я использовал, чтобы освободить память (если это так), я попытался dispose(@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.
1 ответов
Я только что протестировал это в Delphi 2010, и это похоже на ошибку. Компилятор должен генерировать код для очистки, но это не так. Даже писать!--0-->, Как предположил Дэвид, не работает.
вы должны сообщить об этом в QC как об ошибке.