Если я заявляю
PSomeStruct = ^TSomeStruct;
TSomeStruct = record
s1 : string;
end;
и я запускаю следующий код:
var
p: PSomeStruct;
begin
new(p);
p^.s1:= 'something bla bla bla';
dispose(p);
диспетчер памяти FastMM 4 сообщает, что произошла утечка памяти (тип: строка, дамп данных: «что-то бла-бла-бла»). Однако, если я установлю строку s1 пустой до вызова dispose
, все в порядке.
Второй способ, который я нашел, - это изменить тип записи на класс, тогда вместо new
я создаю экземпляр, а вместо dispose
я звоню instance.Free()
. Работает без очистки строк вручную.
Есть ли способ заставить Delphi автоматически чистить мои строки, когда я звоню dispose
?