Офис компании: +7 (495) 229 86 64 | info@pingwinsoft.ru

Pingwin

Внедрение и поддержка свободного программного обеспечения

Ответы на вопросыБаза знаний о СПО

"ПингВин Софтвер" - единственная компания в России, оказывающая поддержку СПО в режижиме 24х7
Узнайте, почему компании выбирают переход на СПО.

к списку новостей

Выделение памяти

16 октября 2015

Еще одним полезным средством является разрешение на освобождение лишь части выделенной клиенту ранее области памяти. Если клиенту нужно освободить лишь часть занимаемой памяти, распределитель должен уметь корректно обрабатывать такую ситуацию. Интерфейс maUoc()/free() не поддерживает эту возможность. Процедура free() освобождает область целиком и возвращает ошибку, если при ее вызове указать адрес, не совпадающий с указанным maUoc(). Возможность увеличения буфера прикладных процессов (например, путем применения функции realloc()) также является весьма полезной. Все очень просто, тоже самое как, например, лишний вес у людей. От него также нужно избавляться, так как это может повлечь за собой различные заболевания. Чтобы похудеть не нужно заниматься выматывающими тренировками, на помощь придут жиросжигатели в киеве. В выборе максимального эффективного препарата, вам помогут специалисты.

Выделенная для использования память должна быть соответствующим образом упорядочена для быстрого обращения к ней. Для многих реализаций архитектуры RISC это является обязательным требованием. В большинстве систем достаточно упорядочивания в виде длинных слов (longword), однако в 64-разрядных машинах, таких как DEC Alpha АХР [6], может потребоваться выравнивание по 8-разрядной границе. Еще одним параметром, связанным с вопросами выделения областей памяти, является минимальный ее размер, который обычно равняется 16 или 8 байтам.

Изначально вся область памяти свободна и описывается единственным вхождением карты ресурсов. Для примера мы произведем два запроса на выделение участков памяти размером 256 и 320 байтов соответственно. После этого мы освободим 128 байтов, начиная со смещения 256. В этот момент времени карта содержит два свободных участка и, следовательно, два вхождения для их описания.

На следующем этапе происходит освобождение еще 128 байтов, начиная от смещения 128. Распределитель памяти определяет, что этот участок размещен последовательно с другим свободным участком, начинающимся с отметки 256. В этом случае распределитель объединяет их в единый сегмент размером 256 байтов. В результате карта ресурсов выглядит как показано на рис. 12.2, в. Последний рисунок описывает ситуацию, сложившуюся через некоторое время после выполнения еще нескольких операций. Необходимо отметить, что, несмотря на то что общий размер свободной памяти равняется 256 байтам, распределитель памяти не может выделить участок длиной, превышающей 128 байтов.

Новости
По тегам
Показать все 64 тега