Свободная Память

2222
знака
0
таблиц
0
изображений

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

Если производный класс осуществляет присваивание указателю this, то конструктор его базового класса будет вызываться только после этого присваивания, и значение указателя this в конструкторе базового класса будет тем, которое присвоено конструктором производного класса. Если базовый класс присваивает указателю this, то будет присвоено то значение, которое использует конструктор производного класса.

Например:

#include

struct base { base(); };

struct derived : base { derived(); }

base::base()

{

cout << "tbase 1: this=" << int(this) << "n";

if (this == 0) this = (base*)27;

cout << "tbase 2: this=" << int(this) << "n";

}

derived::derived()

{

cout << "tderived 1: this=" << int(this) << "n";

this = (this == 0) ? (derived*)43 : this;

cout << "tderived 2: this=" << int(this) << "n";

}

main()

{

cout << "base b;n";

base b;

cout << "new base b;n";

new base;

cout << "derived d;n";

derived d;

cout << "new derived d;n";

new derived;

cout << "at the endn";

}

порождает вывод

base b;

base 1: this=2147478307

base 2: this=2147478307

new base;

base 1: this=0

base 2: this=27

derived d;

derived 1: this=2147478306

base 1: this=2147478306

base 2: this=2147478306

derived 1: this=2147478306

new derived;

derived 1: this=0

base 1: this=43

base 2: this=43

derived 1: this=43

at the end

Если деструктор производного класса осуществляет присваивание указателю this, то будет присвоено то значение, которое встретил деструктор его базового класса. Когда кто-либо делает в конструкторе присваивание указателю this, важно, чтобы присваивание указателю this встречалось на всех путях в конструкто


Информация о работе «Свободная Память»
Раздел: Информатика, программирование
Количество знаков с пробелами: 2222
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
28336
0
12

... задачи П4 место загружается задача П6, поступившая в момент t3. Рис. 2.10. Распределение памяти динамическими разделами Задачами операционной системы при реализации данного метода управления памятью является: ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти, при поступлении новой задачи - анализ запроса, просмотр ...

Скачать
232852
0
0

... с приглашением по запросу (в машинной графике)required parameter обязательный параметрrequired space обязательный пробел (в системах подготовки текстов)requirements specification 1. техническое задание 2. описание требований к программному средствуrerun перезапуск, повторный запускreschedule переупорядочивать очередь (о диспетчере операционной системы)reschedule interval период переупорядочения ...

Скачать
723413
0
0

... данных будет нести больше смысла, если его отсортировать каким‑либо образом. Часто требуется сортировать данные несколькими различными способами. Во‑вторых, многие алгоритмы сортировки являются интересными примерами программирования. Они демонстрируют важные методы, такие как частичное упорядочение, рекурсия, слияние списков и хранение двоичных деревьев в массиве. Наконец, сортировка ...

Скачать
155611
5
0

... теми же ресурсами, но управляемая различными ОС, вычислительная система может работать с разной степенью эффективности. Поэтому знание внутренних механизмов операционной системы позволяет косвенно судить о ее эксплуатационных возможностях и характеристиках. Управление процессами Важнейшей частью операционной системы, непосредственно влияющей на функционирование вычислительной ...

0 комментариев


Наверх