Главная страницаОбратная связьКарта сайта

Интерфейсный объект не всегда освобождается сам

Оформил: 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

Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация по разработке на Delph - "Интерфейсный объект не всегда освобождается сам ", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2024 Дискета.info