Динамическое выделение памяти - это процесс выделения блока памяти во время выполнения программы. Это позволяет программистам создавать динамические структуры данных, управлять памятью и создавать объекты с переменным размером.
В C++, динамическое выделение памяти выполняется с помощью операторов new и delete.
Оператор new:
Оператор new используется для выделения блока памяти определенного размера. Вот пример использования оператора new для выделения блока памяти под одно целое число:
Это выделяет блок памяти размером sizeof(int) байт и возвращает указатель на этот блок памяти. Затем этот указатель сохраняется в указателе p.
Оператор delete:
Оператор delete используется для освобождения ранее выделенного блока памяти. Вот пример использования оператора delete для освобождения блока памяти, на который указывает указатель p:
Это освобождает блок памяти, на который указывает указатель p, и делает этот блок памяти доступным для повторного использования.
Массивы:
Оператор new также может быть использован для выделения блока памяти под массив. Вот пример использования оператора new для выделения блока памяти под массив из 10 целых чисел:
Это выделяет блок памяти размером sizeof(int) * 10 байт и возвращает указатель на этот блок памяти. Затем этот указатель сохраняется в указателе p.
Также можно выделить двумерный массив динамически. Например, чтобы создать массив 2x3 элементов типа double, можно использовать следующий код:
Эта строка выделяет блок памяти размером 2 * sizeof(double*) байт для указателей на строки массива и 2 * 3 * sizeof(double) байт для элементов массива. Затем с помощью цикла for выделяется блок памяти под каждую строку массива.
Динамическое выделение памяти может быть очень полезным инструментом при программировании в C++. Однако, его использование также может привести к утечкам памяти, если не освобождать выделенные блоки памяти вовремя. Поэтому, при использовании динамического выделения памяти необходимо следить за управлением памятью и освобождать блоки памяти вовремя с помощью delete.