Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
Серёга   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
14-31398
VID
2003-06-22 14:59
2003.07.10
Определение формата текста


1-31332
Koloto
2003-06-27 09:14
2003.07.10
Работа с Excel через OLE


6-31371
Администратор
2003-05-02 15:34
2003.07.10
Подключениие к И Н Е Т У :)


1-31190
Lex
2003-06-28 11:18
2003.07.10
Как отключить клавишу


1-31204
evg12
2003-06-28 03:32
2003.07.10
Вопросик по защите.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский