|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как правильно освободить память
Добрый вечер. Ранее затрагивал вопрос о том, как правильно освободить память занимаемую объектом. Советы не подействовали, хотя, может я чего то и недопонимаю, подскажите. Код класса TNObject содержится во вложении. Текс программы следующий:
Par.Host := 'localhost'; Par.Port := 1067; Par.AOwner := Self; for i := 1 to ParcelCount - 1 do Begin Obj := TNObject.Create(Par,Parcel[i]); //Действия с объектом Obj Obj.Destroy; End; Если ParcelCount принимает большое значение, память уходит катастрофически. Как быть? |
#2
|
||||
|
||||
Для потоков так:
FreeAndNil(поток); либо эквивалент: Поток.Free; Поток := nil; Попробуй так: Obj.Free; Obj := NIL; Ну и не только для потоков |
#3
|
||||
|
||||
ZeroMemory и FreeMem еще можно
классы еще можно через деструктор освобождать Class.Destroy (но это слишком грубо) — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#4
|
||||
|
||||
Цитата:
ZeroMemory - заполняет область памяти нулями, но не освобождает ее. FreeMem - освобождает область памяти по указателю, к классам не применима. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |