Форум: "Основная";
Текущий архив: 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