Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 08 дек 2019, 23:24

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
СообщениеДобавлено: 27 июл 2019, 07:47 
Не в сети

Сообщения: 114
Откуда: Каменск-Уральский
Раньше в Паскале были функции MemAvail, MaxAvail. А в КП как узнать сколько ещё свободной памяти осталось, например для открытого массива или для скольких ещё элементов списка можно выделить память?


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 27 июл 2019, 12:59 
Не в сети

Сообщения: 144
Раньше - это во времена DOS? То есть когда программе принадлежал почти полный контроль над ресурсами сравнительно несложного компьютера? Теперь это затруднительно из-за более сложного способа взаимодействия с ресурсами, за которые борются разные программы через посредство сложных и, зачастую, неудачных ОС.

Например, для GNU/Linux справка по функции malloc содержит следующий текст:
Цитата:
By default, Linux follows an optimistic memory allocation strategy. This means that when malloc() returns non-NULL there is no guarantee that the memory really is available. In case it turns out that the system is out of memory, one or more processes will be killed by the OOM killer.
То есть, не только нельзя узнать, сколько ещё памяти можно использовать, но даже нельзя быть увереным, что запрошенная память действительно выделена. Поэтому в GNU/Linux проверки на NULL после malloc часто просто бесполезно усложняют код. Нечто подобное верно и для других ОС, хотя и может быть менее диким.

Например, на iPhone 5 c 1Gb ОЗУ моя простая проверочная программа смогла выделить по кусочкам 4Gb памяти прежде, чем malloc всё-таки выдал NULL. После такого программа падает при любой попытке взаимодействия с интерфейсом, который не содержит ни строчки пользовательского кода. Тут, несмотря на то, что хотя бы можно узнать, что память больше не выделяется, предотвращение падения приложения непросто.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club