new C++ динамическое выделение памяти

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
}
2023-10-22



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

Конструктор в C++. Конструктор копирования и оператор присваивания.
delete C++ оператор освобождения памяти и спецификатор ограничения доступа
explicit С++ запрет неявных преобразования при вызове конструктора
friend C++ дружественная функция имеющая доступ к закрытым членам класса
mutable C++ изменение членов константного объекта
new C++ динамическое выделение памяти
private С++, С++ приватные члены класса, С++ закрыты члены класса
protected C++ указание защищенных членов класса
public С++, С++ открытые члены класса
struct С++ структура
this C++ указатель на текущий объект класса
virtual C++ виртуальные функции