Помощь в учёбе, очень быстро...
Работаем вместе до победы

Управление выделением памяти

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

Это не окончательная классификация: клиентский код может определять, а может и не определять место размещения объектов. Эти решения могут приниматься, а могут и не приниматься объектами классов. Вся тяжелая работа может выполняться ведущими указателями, а может и не выполняться. По умолчанию объекты создаются глобальным оператором new и уничтожаются глобальным оператором delete. Перегрузка этих… Читать ещё >

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

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

  • 1. Глобальное управление.
  • 2. Управление в классах.
  • 3. Управление под руководством клиента.

Это не окончательная классификация: клиентский код может определять, а может и не определять место размещения объектов. Эти решения могут приниматься, а могут и не приниматься объектами классов. Вся тяжелая работа может выполняться ведущими указателями, а может и не выполняться.

Глобальное управление

По умолчанию объекты создаются глобальным оператором new и уничтожаются глобальным оператором delete. Перегрузка этих операторов позволяет реализовать нестандартную схему управления памятью, но это не эффективно.

  • *Трудно объединить раздельно написанные библиотеки, каждая из которых перегружает заданные по умолчанию операторы new и delete.
  • *Перегрузки влияют не только на ваш код, но и на код, написанный другими (включая библиотеки, для которых нет исходных текстов).
  • *Все перегрузки, принадлежащие конкретному классу, перегружают ваши глобальные версии.
  • *Пользователи могут изменить вашу, предположительно, глобальную стратегию, перегружая операторы new и delete в конкретных классах.

Выделение и освобождение памяти в классах

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

Показать весь текст
Заполнить форму текущей работой