Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.10;
Скачать: CL | DM;

Вниз

Нужно ли   Найти похожие ветки 

 
Серёга   (2003-06-27 17:28) [0]

В одних книга читаю что если выделили динамически память, то по завершению программы нужно её осовбодить самому. От других слышу что это проблемы ОС, котора должна сама всё чистить. И тут ещё под FreeBSD, мне ворнинг бывает выдаёт в деструкторе, мол память уже очищена.

Так как поступать ?


 
Серёга   (2003-06-27 17:30) [1]

Да и ещё может посоветуете хороший форум, по Си++, под FreeBSD ?


 
Переяслов Григорий ©   (2003-06-27 17:37) [2]

Смотря как выделяешь. Если взял New, Dispose, GetMem, SetLength, то надо самому освобождать, иногда не освобождение грозит AV


 
Серёга   (2003-06-27 17:41) [3]

(C++) через new
а что такое AV ?


 
Юрий Зотов ©   (2003-06-27 17:46) [4]

... то по завершению программы нужно её осовбодить самому

Не по завершению, а СРАЗУ же, как только она становится не нужна.


 
Serginio   (2003-06-27 18:02) [5]

2(Юрий Зотов © (27.06.03 17:46)) Не всегда это и нужно. Напрмер в Net сборщик мусора вызывается только при достижении некотого уровня. А тем более перед завершением программы. В обязательном порядке нужно освобождать (закрывать) открытые системные ресурсы (файловые дескрипторы, соккеты итд)


 
Юрий Федоров ©   (2003-06-27 18:02) [6]

>>Переяслов Григорий © (27.06.03 17:37)
Это когда же неосвобождение грозит AccessViolation?
Я еще понимаю "Out of memory" - в клинических случаях...


 
Юрий Зотов ©   (2003-06-27 18:24) [7]

> Serginio (27.06.03 18:02)

А при чем тут сборка мусора? Разве речь о ней?


 
Serginio   (2003-06-27 18:43) [8]

В NET память сразу не освобождается (не возвращает физическую память системы) при уничтожении объекта. Сборщик мусора при достижении какого то уровня свободной памяти начинает ее дефрагментировать и если нужно возвращает системе. Возврат физической памяти достаточно накладная вещь. А премущество менеджера памяти в Delphi как раз и построена на использовании свободной памяти и возврате физ. памяти при достижении свободных страниц памяти >=16 кб.


 
Юрий Зотов ©   (2003-06-27 20:13) [9]

> Serginio (27.06.03 18:43)

> В NET память сразу не освобождается (не возвращает физическую
> память системы) при уничтожении объекта. Сборщик мусора при
> достижении какого то уровня свободной памяти начинает ее
> дефрагментировать и если нужно возвращает системе.

Дык... и Borland Memory Manager, вроде бы, работает по тому же принципу.


> Возврат физической памяти достаточно накладная вещь

Дык... известно. Потому они так и работают.


> А премущество менеджера памяти в Delphi как раз и построена на
> использовании свободной памяти и возврате физ. памяти при
> достижении свободных страниц памяти >=16 кб.

Так что ж, разве это означает, что нужно держать динамическую память даже когда она уже не нужна? Уж тогда, скорее, наоборот - именно по этой причине ее и нужно освобождать, как только стала не нужна. Чтобы Memory Manager имел эту самую свободную память и мог ее использовать.




Страницы: 1 вся ветка

Текущий архив: 2003.07.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
7-31538
_ALEXey_
2003-04-22 08:11
2003.07.10
Установка системного времени


6-31383
LOX
2003-05-03 12:29
2003.07.10
А IP у компа всегда одинаковый?


1-31328
fridy
2003-06-27 09:21
2003.07.10
GradientFill


6-31379
dronas555
2003-05-05 12:40
2003.07.10
Отправка почты


4-31574
Sliski Slimak
2003-05-12 09:09
2003.07.10
Собщения для МедиаПлеера.....