Учитывая следующий ответ на связанный с ним вопрос (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 (например, помогает ли она отслеживать утечки памяти)?
Объектные экземпляры не относятся к подсчетам под любой настольной платформой, включая Windows. Объекты ссылаются только на мобильные платформы (iOS, Android). Поэтому вопросы Q1A-E являются спорными.
Как уже сказал Ули, в компиляторах рабочего стола объекты подсчитаны не. Но в мобильных компиляторах они есть, и ответы на ваши вопросы для этих компиляторов:
Обратите внимание, что интерфейсы (и, следовательно, реализующие их объекты) пересчитываются даже в компиляторы рабочего стола. Вышеупомянутые ответы также применимы к таким интерфейсам.