|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.03.2018, 14:26 | #11 |
Форумчанин
Регистрация: 10.10.2013
Сообщений: 150
|
Почему же в любом языке? Например, в C++ такой проблемы не возникает, так как специальное ключевое слово delete сначала вызывает деструктор, а потом устанавливает ссылку на объект в NULL. Жаль, что в Делфи нет такого.
Сайт о программировании и трехмерной графике - cybersite.ucoz.net
|
07.03.2018, 14:28 | #12 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Не устанавливает.
Но там зато есть куча других вещей для управления памятью типа RAII, smart указателей.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
07.03.2018, 15:02 | #13 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
|
07.03.2018, 17:59 | #14 |
Форумчанин
Регистрация: 13.08.2011
Сообщений: 184
|
Нет не устанавливает, а вот в Delphi есть для этого FreeAndNil()
|
07.03.2018, 18:01 | #15 |
Форумчанин
Регистрация: 13.08.2011
Сообщений: 184
|
Ответ: не должно, а - может возникать AV, а может и не возникать, это на волю случая.
|
07.03.2018, 19:51 | #16 | |
Форумчанин
Регистрация: 10.10.2013
Сообщений: 150
|
Цитата:
Кучу раз уже это обсуждалось. Проблема в том, что можно, как FreeAndNil, так и Free. Результат с Free получается не очень. Плюс, в следствии этого, невозможно контролировать, кто и как удаляет. Вопрос заключается в том, как сделать надежную защиту, об этом я также говорил. Это понятно.
Сайт о программировании и трехмерной графике - cybersite.ucoz.net
Последний раз редактировалось cyberdev; 07.03.2018 в 19:56. |
|
08.03.2018, 02:01 | #17 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,859
|
Цитата:
Метод Free единственно что делает, так это возвращает запрошенную ранее память у ОС (точнее у менеджера памяти, который является посредником в данной операции). FreeAndNil (имхо) придуман троешниками для троешников. Помимо всего того что делает метод Free он ещё зачем-то обнуляет конкретную ссылку на уничтожаемый объект. А нафига!? Ведь ссылок на объект может быть гораздо более одной. А обнулится только одна. А если ссылка только одна, то зачем её проверять? Последний раз редактировалось northener; 08.03.2018 в 02:14. |
|
08.03.2018, 02:16 | #18 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,859
|
|
08.03.2018, 12:08 | #19 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,656
|
Цитата:
Ну не хочет чувак в это верить. Остаётся только процитировать классика и успокоиться. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
Последний раз редактировалось min@y™; 08.03.2018 в 21:34. |
|
08.03.2018, 19:00 | #20 | ||
Форумчанин
Регистрация: 13.08.2011
Сообщений: 184
|
Цитата:
Любой программист С++ Вам скажет что это не так. Цитата:
Зачем обнулять ссылку? Ну это то же банально: 1. Что бы можно было проверить существование объекта. 2. Что бы получить исключение при ошибочном обращении. Код:
В С++ тоже используют delete p; p = 0; когда указатель используется многократно для проверки существования объекта. Последний раз редактировалось Alex11223; 08.03.2018 в 20:06. |
||
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверить существование объекта | 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 |