Главная страница
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.019 c
14-31492
Всеволод Соловьёв
2003-06-24 21:08
2003.07.10
Суходольск


1-31282
kudatsky
2003-06-26 12:09
2003.07.10
Ini-файл под Win-2000


3-31157
Orpheus
2003-06-19 08:12
2003.07.10
Проблема с Commit в IB


14-31486
oleg_art
2003-06-24 17:54
2003.07.10
Отправка сообщения в порт


14-31451
shuba
2003-06-21 10:29
2003.07.10
Регулярные выражения