Помощь в написании студенческих работ
Антистрессовый сервис

Дескрипторы. 
Управление памятью в С++

РефератПомощь в написанииУзнать стоимостьмоей работы

Во всех переменных классов и обычных переменных используются дескрипторы ведущих указателей вместо прямых указателей на другие объекты. Одна из стратегий уплотнения и сборки мусора в С++ — ссылаться на все объекты только через дескрипторы, как показано в примере 2.23. Ведущие указатели находятся в специальном пространстве, обеспечивающем простой перебор указателей. В общих чертах архитектура… Читать ещё >

Дескрипторы. Управление памятью в С++ (реферат, курсовая, диплом, контрольная)

Одна из стратегий уплотнения и сборки мусора в С++ — ссылаться на все объекты только через дескрипторы, как показано в примере 2.23.

Пример 2.23 Ссылка на объекты через дескрипторы.

class Foo {.

private:

H bar; // Дескриптор Bar.

public:

H GetBar () { return bar; }.

};

Здесь H — шаблон дескриптора. Каждый H представляет собой умный указатель на ведущий указатель на Bar. Функции, косвенно открывающие переменные класса (такие как GetBar ()), возвращают копию дескриптора. Все ведущие указатели находятся в специальном пространстве памяти, поэтому найти их несложно.

Общее описание архитектуры

В общих чертах архитектура строится на следующих принципах:

  • * Поскольку различные типы объединяются в один набор ведущих указателей, будет использован абстрактный базовый класс VoidPtr для ведущих указателей. Конкретные ведущие указатели будут создаваться по шаблону, производимому от этого базового класса.
  • *Ведущие указатели находятся в специальном пространстве, обеспечивающем простой перебор указателей.
  • *Каждый ведущий указатель обеспечивает подсчет ссылок и удаляет себя, когда счетчик переходит от 1 к 0. В свою очередь, его деструктор вызывает деструктор указываемого объекта и, в зависимости от используемых алгоритмов, пытается (или не пытается) вернуть занимаемую объектом память.
  • *Во всех переменных классов и обычных переменных используются дескрипторы ведущих указателей вместо прямых указателей на другие объекты.
  • *Память возвращается лишь в процессе уплотнения управляемой части кучи. Иначе говоря, понадобится больше памяти, нужно спускать активные объекты в них по куче, чтобы освободить место наверху. Выделение памяти всегда происходит снизу вверх. Описана лишь одна из возможных архитектур уплотнения.
Показать весь текст
Заполнить форму текущей работой