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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2013, 00:58   #1
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию Что вызывать для удаления объектов из памяти? Free||Destroy

И в чем различие? Что-то же из этого должно содержать в себе другое.
На самом деле хочу узнать какую из функций перекрывать в своих классах.
P.S.: Да! Вопрос ламерский.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 27.04.2013, 01:01   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

Free это просто метод, Destroy соответственно деструктор. Чего тут не понятно?
eval вне форума Ответить с цитированием
Старый 27.04.2013, 01:13   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Free проверяет на nil.
вообще вернее вызывать FreeAndNil(object)
тогда случайное Free не будет путатся удалить удаленное.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.04.2013, 01:16   #4
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Ответ пока не ясен, спрошу по другому:
перекрывать мне destroy, а в объектах вызывать free?
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 27.04.2013, 01:21   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

фри он не виртуальный, как вы его собираетесь перекрывать?
учите матчасть
eval вне форума Ответить с цитированием
Старый 27.04.2013, 01:43   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Destroy - описывается в классе как деструктор, хотя можно и destructor sdgdfhdg; и оно будет так-же работать при условии что вы вызовите деструктор наследуемого класса. В этом методе класс чистит за собой.

При вызове Free, удаляется объект и все что с ним связано(вызываются деструкторы класса, компилятор сам за этим следит).

Собственно FreeAndNil использовать лучше всего, и не парится.

И вот почему:
Код:
procedure TObject.Free;
begin
  if Self <> nil then
    Destroy;
end;
Человек_Борща вне форума Ответить с цитированием
Старый 27.04.2013, 02:39   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

деструктор вам писать надо, а это Destroy.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
free pascal. Низкоуровневое управление множествами средствами прямого доступа к оперативной памяти Решетова Алена Помощь студентам 2 21.12.2012 07:33
Что может вызывать восстановление документа? alex77755 Microsoft Office Excel 2 30.08.2012 17:00
Drug'n'Drop объектов из памяти. GrinderSam Win Api 1 17.11.2011 10:27
Интерактивная схема с возможностью добавления/удаления/перемещения объектов в Run-Time Demonmerc Мультимедиа в Delphi 2 02.04.2011 20:57
переменные или что-нибудь, чтоб не вызывать сто раз JavaScript Ihavoker HTML и CSS 3 27.01.2011 06:26