Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / C / C++ / Справочное руководство по С++ /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Свободная память - Программирование от RIN.RU
Свободная память

Операция new (этот пункт) вызывает функцию


extern void* _new (long);


для получения памяти. Параметр задает число требуемых байтов. Память будет инициализирована. Если _new не может найти требуемое количество памяти, то она возвращает ноль.


Операция delete вызывает функцию


extern void _delete (void*);


чтобы освободить память, указанную указателем, для повторного использования. Результат вызова _delete() для указателя, который не был получен из _new(), не определен, это же относится и к повторному вызову _delete() для одного и того же указателя. Однако уничтожение с помощью delete указателя со значением ноль безвредно.


Предоставляются стандартные версии _new() и _delete(), но пользователь может применять другие, более подходящие для конкретных приложений.


Когда с помощью операции new создается классовый объект, то для получения необходимой памяти конструктор будет (неявно) использовать new. Конструктор может осуществить свое собственное резервирование памяти посредством присваивания указателю this до каких-либо использований. С помощью присваивания this значения ноль деструктор может избежать стандартной операции дерезервирования памяти для объекта его класса. Например:


class cl
{
int v[10];
cl () { this = my_own_allocator (sizeof (cl)); }
~cl () { my_own_deallocator (this); this = 0; }
}


На входе в конструктор this является не-нулем, если резервирование памяти уже имело место (как это имеет место для автоматических объектов), и нулем в остальных случаях.


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




 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Договоренности о лексике

Запись синтаксиса

Имена и типы

Объекты и LVALUE(адреса)

Преобразования

Выражения

Описания

Операторы

Внешние определения

Командные строки компилятора

Обзор типов

Константные выражения

Соображения мобильности

Краткое изложение синтаксиса

Отличия от "старого C"

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь