С++ - язык, который изучается постепенно.ГЛАВА 14. Пространтсва памяти
                   Справочники Всё для создания сайта

Ссылки


Home
Бизнес
Справочники
Советы







Материалы книги получены с http://www.itlibitum.ru/

Пространтсва памяти

Все эти фокусы образуют фундамент для дальнейшего строительства, но относить их к архитектуре было бы неверно. Для действительно нетривиального управления памятью понадобятся нетривиальные организационные концепции. В простейшем случае вся доступная память рассматривается как один большой блок, из которого выделяются блоки меньшего размера. Для этого можно либо напрямую обратиться к операционной системе с требованием выделить большой блок памяти при запуске, либо косвенно, в конечном счете перепоручая работу операторным функциям ::operator new и ::operator delete.

В двух последних главах мы взглянем на проблему с нетривиальных позиций и поделим доступную память на пространства (memory spaces). Пространства памяти - это концепция; ее можно реализовать на основе практически любой описанной выше блочно-ориентированной схемы управления памятью. Например, в одном пространстве памяти может использоваться система напарников, а в другом - списки свободной памяти. Концепция представлена в следующем абстрактном базовом классе:

class MemSpace {

public:

void* Allocate(size_t bytes) = 0;

void Deallocate(void* space, size_t bytes) = 0;

};

(Если ваш компилятор поддерживает обработку исключений, при объявлении обоих функций следует указать возможность инициирования исключений.) Некоторым пространствам памяти можно не сообщать в функции Deallocate() размер возвращаемых блоков; для конкретных схем могут появиться другие функции, но минимальный интерфейс выглядит именно так. Возможно, также будет поддерживаться глобальная структура данных - коллекция всех MemSpace (причины рассматриваются ниже). Коллекция должна эффективно отвечать на вопрос: «Какому пространству

памяти принадлежит данный адресПо имеющемуся адресу объекта вы определяете пространство памяти, в котором он живет.

В реализации пространств памяти могут быть использованы любые методики, описанные в предыдущей главе:

1.Глобальная перегрузка операторов new и delete (обычно не рекомендуется).

2.Перегрузка операторов new и delete на уровне класса.

3.Использование оператора new с аргументами под руководством клиента.

4.Использование оператора new с аргументами на базе ведущих указателей.

Существует немало причин для деления памяти на пространства. Ниже описаны некоторые распространенные стратегии выбора объектов, которые должны находиться в одном пространстве памяти.


Назад    Содержание    Далее    

Home  Создание сайтов  Учебник по записи CD  Справочник Web дизайнера Самоучитель IE PHP и MySQL Компьютерные сети С++ E-mail me

Copyright 2007. Климов Александр. All Right Reserved.
Hosted by uCoz