Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2018, 21:08   #31
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от cyberdev Посмотреть сообщение
Почему разработчики языков Делфи и C++ сделали такой механизм, чтобы ссылка не обнулялась?
Дык сказали ж уже, что в С++ во многих случаях можно обойтись вообще без ручного new/delete с помощью RAII и shared_ptr/unique_ptr.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.03.2018, 01:47   #32
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Avazart Посмотреть сообщение
При правильном коде ссылка одна в указанном мною случае.
Когда несколько ссылок это уже другая ситуация, для этого в С++ есть шаред поинтеры.
Т.е объект подсчитывающий кол-во ссылок на объект и удаляющий объект только если счетчик достигает 0
Ну если ссылка только одна, тогда я вообще не понимаю зачем алгоритму программы проверять эту ссылку! Разработчик программы должен точно знать на каждом этапе алгоритма создал ли он сей объект уже и/или уничтожил ли он сей объект уже. Иначе он создаст "ужасного монстра" от программирования, который его же и сожрет.

Цитата:
Сообщение от cyberdev Посмотреть сообщение
Почему разработчики языков Делфи и C++ сделали такой механизм, чтобы ссылка не обнулялась?
А я уже говорил почему. Ссылка не принадлежит объекту.

Цитата:
Сообщение от cyberdev Посмотреть сообщение
Нет. Цель данной темы найти способ защиты от неправильного удаления объекта. Вот и всё.
А что такое "неправильное удаление объекта"?
Приведите тестовый код, который поясняет неправильность удаления объекта.

Последний раз редактировалось Alex11223; 10.03.2018 в 11:57.
northener вне форума Ответить с цитированием
Старый 10.03.2018, 11:50   #33
cyberdev
Форумчанин
 
Аватар для cyberdev
 
Регистрация: 10.10.2013
Сообщений: 150
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А что такое "неправильное удаление объекта"?
О том, что такое неправильное удаление объекта я тоже уже говорил! Точнее, оно не совсем правильное...
Сайт о программировании и трехмерной графике - cybersite.ucoz.net
cyberdev вне форума Ответить с цитированием
Старый 10.03.2018, 12:36   #34
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

На случай важных переговоров.

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 10.03.2018, 12:39   #35
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Ещё:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 10.03.2018, 12:49   #36
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ТС, если вас так смущает ручное управление памятью, может вам пойти в язык со сборщиком мусора?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.03.2018, 13:16   #37
cyberdev
Форумчанин
 
Аватар для cyberdev
 
Регистрация: 10.10.2013
Сообщений: 150
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ТС, если вас так смущает ручное управление памятью, может вам пойти в язык со сборщиком мусора?
Меня не смущает ручное управление памятью. Просто хотел узнать, почему разработчики сделали такой механизм, раз уж проверить существование объекта невозможно? При чем разработчики обеих языков программирования.
Сайт о программировании и трехмерной графике - cybersite.ucoz.net
cyberdev вне форума Ответить с цитированием
Старый 10.03.2018, 13:26   #38
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Потому что это для тех, кто знает что делает и не хочет отдавать ни наносекунды на лишние действия.
Ну и в С++ же есть уже 2 раза указанные тут варианты подходящие для большинства ситуаций.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.03.2018, 02:20   #39
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от cyberdev Посмотреть сообщение
Меня не смущает ручное управление памятью. Просто хотел узнать, почему разработчики сделали такой механизм, раз уж проверить существование объекта невозможно? При чем разработчики обеих языков программирования.
А я уже говорил, что этот механизм придуман троешниками для своих собратьев по ремеслу. Менеджер проекта посмотрел и решил что общую идею проекта это не испортит, а дальше не его забота.
northener вне форума Ответить с цитированием
Старый 11.03.2018, 15:53   #40
Avazart
Форумчанин
 
Аватар для Avazart
 
Регистрация: 13.08.2011
Сообщений: 184
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Ну если ссылка только одна, тогда я вообще не понимаю зачем алгоритму программы проверять эту ссылку! Разработчик программы должен точно знать на каждом этапе алгоритма создал ли он сей объект уже и/или уничтожил ли он сей объект уже. Иначе он создаст "ужасного монстра" от программирования, который его же и сожрет.
Создается ссылка в одной кнопке, удаляется в другой, ссылка на объект - поле класса формы , как проверить есть ли уже созданный объект или нет, есть ли что удалять?
Ясное дело дело можно блокировать доступность кнопок, но не всегда так можно.

Кроме того есть объекты которые удаляют сами себя, например TThread и тут полезно в обработчике OnTerminate обнулить ссылку.

Последний раз редактировалось Avazart; 11.03.2018 в 15:56.
Avazart вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить существование объекта cyberdev Общие вопросы Delphi 23 06.03.2018 19:56
JSON проверить существование значения Dozent Общие вопросы Delphi 2 07.04.2015 18:16
Проверить существование значения в TStringList Shouldercannon Общие вопросы Delphi 4 20.01.2013 15:03
Проверить существование папки Stepan575 Visual C++ 4 17.12.2010 19:02