Оператор new
Оператор new выделяет память в куче для одного объекта
или массива объектов и возвращает указатель на начало
выделенного блока. Первым параметром оператор принимает тип
данных, для которого нужно выделить память, а при выделении
массива во вторые квадратные скобки передается количество
элементов. При успешном выделении памяти оператор возвращает
указатель на выделенный участок, а при неудаче выбрасывает
исключение std::bad_alloc.
Синтаксис
// выделение памяти для одного объекта
type* ptr = new type;
// выделение памяти для одного объекта с инициализацией
type* ptr = new type(value);
// выделение памяти для массива объектов
type* ptr = new type[count];
Пример
Давайте выделим память для одного числа типа int
и запишем в него значение 42:
#include <iostream>
using namespace std;
int main()
{
int* ptr = new int(42);
cout << *ptr << endl;
delete ptr;
return 0;
}
Результат выполнения кода:
42
Пример
Давайте выделим память для массива из 5 чисел
и заполним его значениями:
#include <iostream>
using namespace std;
int main()
{
int* arr = new int[5];
for (int i = 0; i < 5; i++) {
arr[i] = i + 1;
}
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
cout << endl;
delete[] arr;
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте выделим память для строки std::string
и выведем ее на экран:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string* str = new string("abcde");
cout << *str << endl;
delete str;
return 0;
}
Результат выполнения кода:
"abcde"
Смотрите также
-
оператор
delete,
который освобождает память одного объекта -
оператор
new[],
который выделяет память для массива объектов -
оператор
delete[],
который освобождает память массива объектов -
оператор
placement new,
который создает объект в уже выделенной памяти