Здесь переменная указатель является указателем типа тип переменной. Операторы new выделяет память для хранения значения типа тип переменной и возвращает её адрес. С помощью new могут быть размещены любые типы данных. Оператор delete освобождает память, на которую указывает переменная указатель. Если операция выделения памяти не может быть выполнена, то оператор new генерирует исключение типа xalloc. Если программа не прехватит это исключение, то она будет снята с выполнения. Хотя для коротких программ такое поведение по умолчанию является удовлетворительным, для реальных прикладных программ обычно требуется перехватить исключение и обработать его соответствующим образом. Для того чтобы отделить это исключение необходимо включить заголовочный файл <except.h>
Пример. В данной программе блок try/catch отслеживает ошибки выделения памяти.
#include<iostream.h>
#include<except.h>
int main()
{int *p;
try {
p=new int; // выделение памяти для int
}catch(xalloc xa)
{
cout<<”размещение невозможно\n”;
return 1;
}
*p=20; // присваивает данному участку памяти значение 20
cout<<*p; //демонстрирует результаты путём вывода значений
delete h; //освобождает память
return 0;
}
Эта программа присваивает переменной р адрес блока памяти, имеющего достаточный размер для того, чтобы содержать число целого типа, далее этой памяти присваивается значение 20 и содержимое памяти выводится на экран. Динамически выделенная память освобождается.
Пример инициализации памяти с помощью указателя new. В данной программе память, на которую указывает указатель р, инициализирует значение 99.
#include<iostream.h>
#include<except.h>
int main()
{int *p;
try{
p=new int(99); // инициализация 99
}catch (xalloc x) {
cout <<”размещение невозможно\n”;
return 1;
}
cout <<*p;
delete p;
return 0;
}