Следующая программа использует оператор new для распределения памяти под массив из 500 значений с плавающей точкой:
float *array = new float[100];
if (array!= NULL) cout << "Память выделена успешно";
else cout << "new не может выделить память" << endl;
Поскольку эта программа "жестко закодирована" на объем требуемой памяти, возможно, вам потребуется ее редактировать и перекомпилировать, если возникнет необходимость, чтобы программа выделила меньше или больше памяти. Как уже обсуждалось, одна из причин существования динамического распределения памяти состоит в том, чтобы избавиться от необходимости редактировать и перекомпилировать программу при изменении требований к объему памяти. Когда ваша программа использует оператор new для динамического распределения памяти, то вполне вероятно, что она сама посчитала количество будущих элементов и запросит выделить соответствующее количество памяти или запросит это значение у пользователя.
Пример 3.
Следующая программа запрашивает у пользователя количество памяти, которое необходимо выделить для хранения массива символов, и затем распределяет память, используя оператор new:
#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
int size;
char *pointer;
cout << "Введите размер массива, до 30000: ";
cin >> size;
if (size <= 30000)
{
char *pointer = new char[size];
if (pointer!= NULL) cout << "Память выделена успешно";
else cout << "Невозможно выделить память" << endl;
}
}
ОСВОБОЖДЕНИЕ ПАМЯТИ
Оператор C++ new позволяет вашей программе выделять память динамически во время выполнения. Если вашей программе больше не нужна выделенная память, она должна ее освободить, используя оператор delete. Для освобождения памяти с использованием оператора delete вы просто указываете этому оператору указатель на данную область памяти, как показано ниже:
delete pointer;