new оператор выделения динамической памяти в куче (месте хранения во время выполнения)
1) При встрече компилятором оператора new вызывается конструктор класса
2) При невозможности выделения памяти оператором new выбрасывается (throw) исключение типа std::bad_alloc
3) Память выделяемая оператором new присваивается указателю.
#include <iostream> // cout
using namespace std;
int main(void) {
int* p1 = new int; // Выделим память под int и присвоим ее указателю p1
int* p2 = new int(5); // Выделим память под int, инициализируем значение пятью и присвоим ее указателю p1
int* p3 = new int[10]; // Выделяем память под массив из 10 int
cout << "*p1 = " << *p1 << endl; //395123392 (Число является случайным, исходя из того что лежало в памяти)
cout << "*p2 = " << *p2 << endl; //5 Значение заданное при инициализации
cout << "p3[0] = " << p3[0] << endl; //-875077872 (Число является случайным, массив не инициализирован)
delete p1; // Освобождение памяти выделенной под указатель p1
delete p2; // Освобождение памяти выделенной под указатель p2
delete[] p3; // Освобождение памяти выделенной под массив p3
}