Динамическое выделение памяти в C++ осуществляется с помощью оператора new
и delete
. Оператор new
позволяет выделить память для объекта или массива во время выполнения программы, а оператор delete
освобождает выделенную память.
Для выделения памяти для одиночного объекта используется следующий синтаксис:
Тип* указатель = new Тип;
Например, чтобы создать динамический объект типа int
, можно использовать следующий код:
int* ptr = new int;
Выделенная память будет равна размеру типа int
. После успешного выполнения оператора new
, переменная ptr
будет содержать адрес выделенной памяти.
Чтобы освободить динамически выделенную память, используется оператор delete
. Пример:
delete ptr;
После выполнения оператора delete
память, ранее выделенная под объект типа int
, будет освобождена.
Выделение памяти для массива имеет более сложный синтаксис:
Тип* указатель = new Тип[размер];
Например, чтобы создать динамический массив типа int
с размером 5, можно использовать следующий код:
int* arr = new int[5];
После успешного выполнения оператора new
, переменная arr
будет содержать адрес начала выделенного блока памяти, достаточного для хранения 5 элементов типа int
.
Для освобождения памяти, выделенной для динамического массива, используется оператор delete[]
:
delete[] arr;
Важно обратить внимание, что для динамического массива нужно использовать оператор delete[]
, а не просто delete
, чтобы гарантировать правильное освобождение всего блока памяти.
Динамическое выделение памяти позволяет программисту управлять памятью во время выполнения программы и создавать объекты с переменным размером или динамически изменяемые массивы. Однако, следует помнить о правильном управлении памятью и избегать утечек памяти, освобождая выделенную память оператором delete
или delete[]
по завершении работы с объектами или массивами.