Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2011, 11:30   #1
Miha85193
Delphi, OpenGL API
Форумчанин
 
Аватар для Miha85193
 
Регистрация: 29.03.2010
Сообщений: 152
По умолчанию Безвозвратная потеря памяти.

Прочитал недавно в одной книге следующее:

Цитата:
Если DLL аварийно завершится или по другой причине закончит работу, не освободив свои блоки памяти, то распределенная память и ресурсы Windows будут числиться занятыми до перезагрузки Windows. Если логический номер блока будет потерян, освободить память уже не удастся.
Что означает последнее предложение данной цитаты? А именно, что такое логический номер блока и где он хранится, в оперативной памяти или на винчестере? И не означает ли это то, что если работа системы завершится (на пример из-за перебоев питания), то занимаемая память может быть утеряна безвозвратно и общий размет оперативной памяти уменьшится на размер этой памяти.

Последний раз редактировалось Miha85193; 23.02.2011 в 11:35.
Miha85193 вне форума Ответить с цитированием
Старый 23.02.2011, 12:39   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
распределенная память и ресурсы Windows будут числиться занятыми до перезагрузки Windows
Разве винда не освобождает выделенную память после завершения процесса? Логический номер блока - очевидно, автор имел ввиду дескриптор, почтитайте, лучше Рихтера.

Цитата:
не означает ли это то, что если работа системы завершится (на пример из-за перебоев питания), то занимаемая память может быть утеряна безвозвратно и общий размет оперативной памяти уменьшится на размер этой памяти.
Нет, конечно.
пыщь

Последний раз редактировалось JTG; 23.02.2011 в 12:42.
JTG вне форума Ответить с цитированием
Старый 23.02.2011, 12:41   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это где такой бред нашли?
Цитата:
И не означает ли это то, что если работа системы завершится (на пример из-за перебоев питания), то занимаемая память может быть утеряна безвозвратно и общий размет оперативной памяти уменьшится на размер этой памяти.
мдям...вы в курсе что оперативка обнуляется при запуске компа?
при запуске компа она вообще пуста.
Цитата:
А именно, что такое логический номер блока и где он хранится, в оперативной памяти или на винчестере?
под памятью в винде обычно имеют в виду виртуальное адресное пространство процесса(+память ядра)
это все хранится в ОЗУ+файл подкачки.
файл подкачки при запуске ОС тоже очищается.

видимо автор книги писал про Win 3.11.
или же просто не знает что такое процесс и его виртуальное адресное пространство.
Цитата:
Разве винда не освобождает выделенную память после завершения процесса?
она освобождает все ресурсы выделенные процессу
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 23.02.2011 в 12:43.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.02.2011, 13:02   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> видимо автор книги писал про Win 3.11.

скорее про 3.0 или более раннюю, всё-таки 3.11 уже была похожа на нормальную винду. Хотя подробности с памятью из убиваемых ДЛЛ не помню. Под ХП это точно не так, остальное не важно )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 23.02.2011, 14:03   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
занимаемая память может быть утеряна безвозвратно и общий размет оперативной памяти уменьшится на размер этой памяти.
Упаси боже от подобного. Не успевали бы новые планки памяти покупать
И причем тут Win 3.0? Планка памяти на 32 мб. останется таковой и в Win 7 и в DOS 2. Вывод: либо автор той книги писал с большого бодуна, либо имел ввиду что-то другое.
_SERGEYX_ вне форума Ответить с цитированием
Старый 23.02.2011, 14:13   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

про старые версии ОС я говорил имея в виду текст цитаты именно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.02.2011, 16:14   #7
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Предлагаю обратить внимание на слова "если... аварийно завершится".
В этом случае винда не всегда соображает, нужно ли освобождать этот кусок памяти или нет. И хвосты запросто остаются.
Пример - многократно рассматриваемые на форуме вопросы насчет утечек памяти. А ведь там не было "аварийки", программы завершались в штатном режиме. Просто программер не удосужился сделать освобождение и известить об этом систему...
asmodey1 вне форума Ответить с цитированием
Старый 23.02.2011, 16:50   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
> видимо автор книги писал про Win 3.11.

скорее про 3.0 или более раннюю, всё-таки 3.11 уже была похожа на нормальную винду.
Все Win16 имели общее адресное пространство, поэтому - в том числе и в Win3.11.

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
Вывод: либо автор той книги писал с большого бодуна, либо имел ввиду что-то другое.
Вывод: кто-то не умеет читать. Автор книги писал не про это, а про ситуацию в Win16. А "пропадающая навсегда память" - "оригинальная" интерпретация автора темы.

Цитата:
Сообщение от asmodey1 Посмотреть сообщение
В этом случае винда не всегда соображает, нужно ли освобождать этот кусок памяти или нет. И хвосты запросто остаются.
Пример - многократно рассматриваемые на форуме вопросы насчет утечек памяти. А ведь там не было "аварийки", программы завершались в штатном режиме. Просто программер не удосужился сделать освобождение и известить об этом систему...
Ты какой-то бред сейчас сказал. Вот уже 15 лет как мы живём с раздельными виртуальными адресными пространствами процессов. Как это можно не заметить?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 23.02.2011, 16:52   #9
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Автору темы: я не знаю, что вы за книгу читаете, но там написан либо бред, либо устаревшие (лет на 16) сведения.

Рекомендуется к прочтению.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 23.02.2011, 17:33   #10
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Ты какой-то бред сейчас сказал. Вот уже 15 лет как мы живём с раздельными виртуальными адресными пространствами процессов. Как это можно не заметить?
Ну, конечно, вам, молодой человек, виднее. Особенно если еще учесть ваше ничем неприкрываемое высокомерие, выражающееся в ответах типа
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
...несложно сообразить...
Рекомендую подучить мат-часть.
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
... Это могут быть и баги в Delphi.
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
...Чего теперь ты ожидаешь услышать?
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
С чего ты взял, что это должно работать?
и так далее...
Видимо, иначе как без оскорбления других, вы общаться неспособны.
Кстати, не припомню, когда мы с вами перешли на "ты"... Или хамить незнакомому человеку - это тоже неотъемлемая часть вашей "всезнающей" натуры ?
Или вы просто из новой генерации кодеров, которые в ответ на справедливые замечания говорят: "Сам дурак!" ?

З.Ы. Ну, и напоследок.
Без освобождения ресурсов вручную легко пропустить критичные утечки памяти.
А это из MSDN
Цитата:
Global atoms are not deleted automatically when the application terminates.
Причем не только атомы. Незакрытые потоки тоже могут послужить на благо утечек и занятости памяти.
Кому-то это покажется старомодным, но я предпочитаю сам возвращать то, что взял у системы.

Последний раз редактировалось asmodey1; 23.02.2011 в 18:09.
asmodey1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для тестирования памяти, тестирование ячеек памяти Hunter557 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 30.01.2011 19:20
Кольцевая очередь на массиве в статической памяти с элементами в динамической памяти ]tach[ Общие вопросы C/C++ 1 19.01.2011 13:16
Потеря фокуса Naive JavaScript, Ajax 1 16.11.2010 05:53
GeForce 440 MX: потеря памяти. Пепел Феникса Компьютерное железо 1 11.07.2010 15:23
Потеря данных Марина520 Microsoft Office Word 0 13.06.2010 22:48