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


Полнотекстовый поиск по базе:

Главная >> Статья >> Информатика, программирование


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




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

Если вы пользовались классом 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 end\n";

}

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

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 встречалось на всех путях в конструкторе.

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.realcoding.net

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

  • Память

    Курсовая работа >> психология, педагогика
    ... выборочность, точность - приблизительность, последовательность -свободность, прочность - кратковременность, своевременность воспроизведения)". ... навыков, закономерностей, автобиографическая память). 5. Долговременная память может делиться на эпизодическую ...
  • Память. Виды памяти и их особенности

    Реферат >> психология, педагогика
    ... при прошлых бросках. Эпизодическая памятьпамять о событиях, участниками или ... с нашей стороны. Семантическая памятьпамять о таких фактах, как ... . "Психология" Учпедгиз, Москва, 1953 г. Свободная энциклопедия «Википедия» Психологический словарь Блонский ...
  • Память и представление

    Реферат >> психология, педагогика
    ... представлениями. Что же такое память? Память - процесс сохранения прошлого ... и воспроизведения. При узнавании память получает поддержку в непосредственном восприятии ... , воспроизведение принимает характер свободно протекающих непреднамеренных воспоминаний. ...
  • Память сердца

    Реферат >> Литература и русский язык
    Память сердца Мария Сетюкова- ... у ребёнка неторопливые, “праздные”, свободные, созерцательные минуты, не говоря уже ... юном – возрасте свежа и бесконечна память детства. Кажется, покопайся в ней, ... как улитка, свой Дом – свою Память – приговорены, по-видимому, на ...
  • Память преподобного Максима Грека

    Статья >> История
    Память преподобного Максима Грека Святитель Феодосий ... к Максиму. Пользуясь этою любовью, Максим свободно обличал пороки в вельможах, в духовенстве, в народе ... угождать людям более, чем Богу, свободно указывали великому князю на решение ...
  • Память о Великой Победе в нашей семье

    Сочинение >> История
    ... фашистской чумы и сохранить славянские народы свободными, независимыми. Ведь Гитлер приказал уничтожать ... . Иван – пехотный капитан. Федор – летчик. Память о них мы до сих пор ... две награды мы бережно храним в память о Великой Победе, и о войсковой службе по ...
  • Лекции по предмету Операционные системы

    Реферат >> Информатика, программирование
    ... на разделы. Сначала вся память свободна. Каждой вновь поступающей задаче ... адресов, так, чтобы вся свободная память образовывала единую свободную область (рисунок 2.11). ... которых превышал имеющуюся в наличии свободную память. Решением было разбиение программы ...
  • Технический словарь

    Топик >> Иностранный язык
    ... редактор context-free grammar контекстно-свободная [бесконтекстная] грамматика, КС- ... кадровая синхронизация free-form свободного формата (о представлении данных ... free space свободная память, свободное пространство памяти free union свободное объединение (тип ...
  • Управление памятью

    Реферат >> Информатика, программирование
    ... на разделы. Сначала вся память свободна. Каждой вновь поступающей задаче ... адресов, так, чтобы вся свободная память образовывала единую свободную область (рисунок 2.11). ... которых превышал имеющуюся в наличии свободную память. Решением было разбиение программы ...
  • VB, MS Access, VC++, Delphi, Builder C++ принципы(технология), алгоритмы программирования

    Реферат >> Информатика, программирование
    ... рекурсивных вызовов, процедура займет всю свободную память, и программа аварийно остановится ... быстро исчерпает всю свободную стековую память и программа аварийно прекратит ... , приведенные здесь. Добавление свободного пространства в дерево значительно ...