powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
25 сообщений из 28, страница 1 из 2
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778463
amadeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему автоматический подсчет ссылок в Delphi XE работает только в компиляторах для IOS? То есть, такой код приведет к утечке памяти:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function func(): TStrings;
begin
	result := TStringList.create();
end;

procedure proc(value: TStrings);
begin
	...
end;

...

	proc(func());



Нужно сначала заносить результат работы "func" в переменную, эту переменную передавать в "proc" и затем удалять объект. Сплошные неудобства. Почему разработчики Delphi так ненавидят меня?
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778465
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amadeusПочему разработчики Delphi так ненавидят меня?
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778467
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл Эра,
Кому то не нравится подсчет ссылок :)
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778473
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amadeusПочему разработчики Delphi так ненавидят меня?

Потому что ты не в состоянии понять разницу между классами и интерфейсами, очевидно. У
Дельфи изначально предполагался низкий порог вхождения, но всё же не под плинтусом. Так
что меняй ориентацию, Ява - твоё всё.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778490
amadeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПотому что ты не в состоянии понять разницу между классами и интерфейсами, очевидно.

То есть, они ненавидят всех, кто не в состоянии понять эту разницу?
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778492
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amadeusТо есть, они ненавидят всех, кто не в состоянии понять эту разницу?

Нет, об этом уже позаботилась природа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778493
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
amadeusавторПотому что ты не в состоянии понять разницу между классами и интерфейсами, очевидно.

То есть, они ненавидят всех, кто не в состоянии понять эту разницу?
это ты ненавидишь всех, кто знает, в чём разница
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778496
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amadeusТо есть, они ненавидят всех, кто не в состоянии понять эту разницу?
Это не они, просто натура абхорэт вакуум.
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778497
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Однако, нельзя сказать, что соединение интерфейсов и подсчета ссылок это хорошее архитектурное решение. Это независимые понятия, и в такой реализации видится явная кривизна.
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778498
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovнельзя сказать, что соединение интерфейсов и подсчета ссылок это хорошее архитектурное решение
Как бы и да, но - "вот так сделали", и ничего тут не поделать.
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778500
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovв такой реализации видится явная кривизна.

Ну да, ставить знак равенства между COM и IUnknown было реально плохой идеей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778506
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovDimitry Sibiryakov,

Однако, нельзя сказать, что соединение интерфейсов и подсчета ссылок это хорошее архитектурное решение. Это независимые понятия, и в такой реализации видится явная кривизна.
Не хотите, так не считайте. К слову говоря, реализация интерфейсов в делфи реализована отлично. Потом идет .net и далее си++.
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778508
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovasviridenkovв такой реализации видится явная кривизна.

Ну да, ставить знак равенства между COM и IUnknown было реально плохой идеей.

Так знак равенства между COM и IUnknown в делфи не стоит. Можно легко реализовать IUnknown без системной реализации COM и реализация будет работать с кодом на .net и си++. А за счет виртуальных интрефейсов можно прикрутить любой код.
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778509
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нельзя реализовать COM без IUnknown. Кусок с отрицательным смещением у классов мешается.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778510
amadeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть, можно поставить какую-нибудь галочку, чтобы механизм заработал, и объекты удалялись автоматически, как в iOs? Возможно, директиву компилятора...
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778512
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет.
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778530
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНельзя реализовать COM без IUnknown. Кусок с отрицательным смещением у классов мешается.

Понятное дело. Нигде нельзя. Я о том, что IUnknown можно реализовать без COM
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778553
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziv-2014Понятное дело. Нигде нельзя.

Вообще-то - можно. Причём практически везде. Но не в Дельфи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778630
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovziv-2014Понятное дело. Нигде нельзя.

Вообще-то - можно. Причём практически везде. Но не в Дельфи.

Везде - это где? Назови хотя бы один? В си++ и си# это так, это технология COM. В основе COM лежит реализация IUnknown. В любой интерфейс наследуется от IUnknown. Если не видно реализации IUnknown, значит эта реализация засунута в внутрь.
Давай код выкладывай, где реализация COM реализована без реализации IUnknown.
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778828
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziv-2014Везде - это где? Назови хотя бы один? В си++ и си# это так, это технология COM. В основе
COM лежит реализация IUnknown.

COM это всего лишь стандарт на двоичную раскладку абстрактного класса и его VMT. Над ним -
IUnknown (COM+/OLE), который резервирует первые три слота VMT под функции поддержки
factory вообще и CoCreateInstance в частности, ещё выше - IDispatch (OLE Automation).

В FPC без проблем создаются СОМ-совместимые Corba-классы у которых IUnknown и близко не лежал.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778949
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovziv-2014Везде - это где? Назови хотя бы один? В си++ и си# это так, это технология COM. В основе
COM лежит реализация IUnknown.

COM это всего лишь стандарт на двоичную раскладку абстрактного класса и его VMT. Над ним -
IUnknown (COM+/OLE), который резервирует первые три слота VMT под функции поддержки
factory вообще и CoCreateInstance в частности, ещё выше - IDispatch (OLE Automation).

В FPC без проблем создаются СОМ-совместимые Corba-классы у которых IUnknown и близко не лежал.

Ты ошибаешься. Сам же пишешь, чтобы класс был COM совместимым для него необходимо VMT и указатели на функции. Соответственно IUnknown будет реализован внутри. Вызови QueryInterface(IUnknown, unk) и получишь указатель на IUnknown. Иначе класс не будет COM-совместимым.
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778952
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amadeus,

Но вообще то в Delphi под Windows разрешена адресная арифметика и всякие там pointer --> integer --> pointer преобразования. Вся VCL построена на этом. И становится понятно, что сборщик мусора сделать (в Delphi под Windows) не реально.
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778963
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziv-2014Соответственно IUnknown будет реализован внутри.

С чего бы вдруг? AddRef, Release и QueryInterface это обычные методы, ничем не лучше и не
хуже других, точно так же лежащих в VMT. Выкинь их и СОМ останется, а вся иерархия
IUnknown исчезнет как страшный сон.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778966
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семёнamadeus,

Но вообще то в Delphi под Windows разрешена адресная арифметика и всякие там pointer --> integer --> pointer преобразования. Вся VCL построена на этом. И становится понятно, что сборщик мусора сделать (в Delphi под Windows) не реально.Реально, если делать самому.

Я вот в одном из проектов сделал классический эрзац гарбаж коллектор.

Иначе из-за специфики было трудно ловить освобождаются объекты.

Просто все нужные мне классы рождались от специального моего типа TCountable, внутри которого была реализована работа по ведению списка этих самых объектов по типам и удаления их когда они уже не нужны.
...
Рейтинг: 0 / 0
Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
    #39778967
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я там даже сделал что было видно в каком юните отслеживаемый объект был создан. :)
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Почему автоматический подсчет ссылок работает только в компиляторах для IOS?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]