разница между новым и новым [] - PullRequest
0 голосов
/ 24 мая 2018

В чем разница между int* arr = new int [5]; и int* arr = new int();?

1 Ответ

0 голосов
/ 24 мая 2018
int* arr = new int [5];

Вышеприведенное выделяет массив 5 int без их инициализации и присваивает его новой переменной arr.Массив должен быть освобожден с использованием delete [] arr;.

int* arr = new int();

. Вышеприведенное выделяет одно инициализированное значение int и присваивает его новой переменной с неправильным именем arr.Память должна быть освобождена с помощью delete arr;.

Доступ за пределы допустимого или попытка освобождения чего-либо неправильным образом - все это вызывает Неопределенное поведение , что означает, что ни компилятор, ни среда выполнения не находятся подлюбые требования.

Поскольку ваша программа заканчивается вскоре после этого, допустимо утечка этих выделений, чтобы избежать подделки.Вы должны добавить комментарий, который вы делаете намеренно, хотя.

...