Подсчитывается ли ссылка на объекты в приложениях Delphi, ориентированных на Windows, и если да, то какова ее цель?

0

Учитывая следующий ответ на связанный с ним вопрос (qaru.site/questions/972442/...), ссылка на объекты подсчитывается в приложениях Delphi под управлением Windows?

то есть:.

Q1A имеет ли следующий объект счетчик ссылок 2 после второго оператора?

o1 := TMyObject.Create;
o2 := o1;

Q1B. Следуя приведенному выше, назначая o1 to nil, сбросьте счетчик ссылок до 1?

o1 := nil;

Q1C Снова следуя on, назначив o2 на nil, сбросьте счетчик ссылок до 0?

o2 := nil;

Q1D Перемещение вперед, если приведенное выше верно, и теперь объект имеет счетчик ссылок 0, я понимаю, что компилятор НЕ будет автоматически освобождать объект (o2.Free должен был быть вызван ранее на o2 := nil выше, чтобы предотвратить утечку памяти). Помните, что я говорю о цели Windows, а не о мобильной цели с автоматическим подсчетом ссылок (ARC).

Q1E Если подсчет ссылок автоматически не освобождает память, связанную с объектом, то какова именно точка подсчета ссылок в Delphi (например, помогает ли она отслеживать утечки памяти)?

  • 4
    К сожалению, вы были введены в заблуждение этим другим ответом.
  • 3
    Подсчет ссылок на экземпляры объектов в целях рабочего стола (Win32 / MacOS) Delphi отсутствует - только в мобильных целях (Android / iOS).
Показать ещё 4 комментария
Теги:

2 ответа

11
Лучший ответ

Объектные экземпляры не относятся к подсчетам под любой настольной платформой, включая Windows. Объекты ссылаются только на мобильные платформы (iOS, Android). Поэтому вопросы Q1A-E являются спорными.

4

Как уже сказал Ули, в компиляторах рабочего стола объекты подсчитаны не. Но в мобильных компиляторах они есть, и ответы на ваши вопросы для этих компиляторов:

  • Q1A: да, это будет 2
  • Q1B: да, это будет до 1
  • Q1C: да, это будет 0, и объект будет автоматически освобожден.
  • Q1D: см. Q1C
  • Q1E: см. Q1C

Обратите внимание, что интерфейсы (и, следовательно, реализующие их объекты) пересчитываются даже в компиляторы рабочего стола. Вышеупомянутые ответы также применимы к таким интерфейсам.

  • 0
    Вопрос конкретно задается о настольных компиляторах. Поэтому вы ответили на вопрос, который не был задан. Не стесняйтесь спрашивать и отвечать.
  • 0
    Я знаю, что я не просто ответил на вопрос. Я только что предоставил дополнительную информацию.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню