Язык программирования C++


Динамическое выделение памяти


Третий способ выделения памяти в языке Си++ – динамический. Память для величины какого-либо типа можно выделить, выполнив операцию   new. В качестве операнда выступает название типа, а результатом является адрес выделенной памяти.

long* lp; // создать новое целое число lp = new long; Complex* cp; // создать новый объект типа Complex cp = new Complex;

Созданный таким образом объект существует до тех пор, пока память не будет явно освобождена с помощью операции   delete. В качестве операнда delete должен быть задан адрес, возвращенный операцией new:

delete lp; delete cp;

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

Если необходимо динамически создать массив, то нужно использовать немного другую форму new:

new int[100];

В отличие от определения переменной типа массив, размер массива в операции new может быть произвольным, в том числе вычисляемым в ходе выполнения программы. (Напомним, что при объявлении переменной типа массив размер массива должен быть константой.)

Освобождение памяти, выделенной под массив, должно быть выполнено с помощью следующей операции delete

delete [] address;




Начало  Назад  Вперед