![]() |
![]() ![]() ![]() ![]() |
|
Интерфейсный объект не всегда освобождается самDelphi , Синтаксис , Ошибки и Исключения
Оформил: DeeCo Автор: Suvorov Alexander
procedure SomeProc({const} A: IUnknown);
begin
// ...
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SomeProc(TInterfacedObject.Create);
end;
Подобный вызов SomeProc будет приводить к утечке памяти, если A передаётся
как Const или не используется в SomeProc.
КОММЕНТАРИЙ: Проверено: D5, NT4, W2K.Теряется 16 байт при каждом вызове. Этот камень перенесен из категории КОМПИЛЯТОР. Как выяснилось, здесь мы имеем дело с неочевидными особенностями правил подсчета интерфейсных ссылок. Подробнее можно почитать главу справки: Delphi Help - > Programming with Delphi - > Common programming tasks - > Using reference counting Интерфейсный объект не всегда освобождается сам, что может привести к утечке памяти, если он передаётся как Const или не используется в процедуре. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Ошибки и Исключения ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||