Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как узнать свободна ли область памяти? / 8 сообщений из 8, страница 1 из 1
09.06.2007, 16:46
    #34586560
nrmBeginner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать свободна ли область памяти?
Ну так вот, можно ли и как узнать свободна ли область памяти? Например если я хочу увеличить размер массива не перемещая его.
...
Рейтинг: 0 / 0
09.06.2007, 17:14
    #34586608
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать свободна ли область памяти?
а если не свободна, увеличивать не будешь?
...
Рейтинг: 0 / 0
09.06.2007, 18:10
    #34586721
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать свободна ли область памяти?
Для систем реального времени рекомендуется заранее выделить массив нужного размера или озаботится пулом объектов в достаточном количестве. Если система таковой не является тогда ИМХО не стоит заморачиватся.
...
Рейтинг: 0 / 0
09.06.2007, 18:17
    #34586731
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать свободна ли область памяти?
nrmBeginner wrote:

> Ну так вот, можно ли и как узнать свободна ли область памяти? Например
> если я хочу увеличить размер массива не перемещая его.
Помнится, в вин максимальный объем памяти,
которую можно выделить был где-то около (объем_оперативки+объем_файла_подкачки) и
только после этого система сообщала что "оперативка закончилась".
Сомневаюсь, что массив будет такого размера.

А вообще GlobalMemoryStatus под Windows.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
10.06.2007, 08:29
    #34587017
nrmBeginner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать свободна ли область памяти?
maytonДля систем реального времени рекомендуется заранее выделить массив нужного размера или озаботится пулом объектов в достаточном количестве. Если система таковой не является тогда ИМХО не стоит заморачиватся.
А что такое пул? И почему не стоит заморачиваться?
...
Рейтинг: 0 / 0
10.06.2007, 09:02
    #34587025
nrmBeginner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать свободна ли область памяти?
maXmoа если не свободна, увеличивать не будешь?
Умный да?
...
Рейтинг: 0 / 0
10.06.2007, 14:51
    #34587167
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать свободна ли область памяти?
nrmBeginnerА что такое пул? И почему не стоит заморачиваться?

Ваша затея с увеличением памяти - это попытка пойти в обход стандартного Memory Management API. А в связи с этим возникает вопрос - зачем? Есть функция realloc(..) которая выполняет эту задачу. В скобках замечу, что мне неизвестен её алгоритм. Возможно это более сложный вариан malloc с проверками на допустимость операции растягивания экстента памяти или с move-ом в новое место. В любом случае, эта задача сегодня решена и не представляет интереса для исследования.

Если вы хотите получить динамический массив с константным временем отклика при растягивании - резервируйте место заранее. В конце-то концов для любой задачи можно задать какие-то разумные рамки использования ресурсов. Поэтому особо заморачиватся с "подглядыванием" вперёд не стоит.

Пул - еще один паттерн, предназначеный для оптимизации использования памяти. Про него рассказывать не буду ибо нечего. Почитайте в Интернете. Там полно статей и примеров.
...
Рейтинг: 0 / 0
10.06.2007, 16:53
    #34587279
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать свободна ли область памяти?
mayton wrote:

> Есть функция realloc(..) которая выполняет эту задачу. В скобках замечу,
> что мне неизвестен её алгоритм.
Вообще можно посмотреть MSVCROOT/VC/crt/src/realloc.c (если, конечно,
используется MSVC, а не билдер, например). Код довольно запутанный, в
некоторых случаях происходит ресайз, в некоторых случаях выделяется новый
блок и данный копируются, в некоторых вызывается HeapReAlloc и т.д...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как узнать свободна ли область памяти? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]