Является ли UB использовать `delete` для указателя `int[1]`? [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Является ли UB использовать `delete` для указателя `int[1]`? [дубликат]

Сообщение Anonymous »

Я столкнулся с ситуацией в C++, которая кажется мне несколько запутанной, и мне нужна ясность:

Код: Выделить всё

int *p = new int[1];
В этом случае p указывает на массив длиной 1. Мне интересно, безопасно ли использовать delete p; для освобождения этого указателя, обрабатывая это так, как будто это одна переменная или мне нужно использовать delete[] p; для правильного освобождения памяти.
Я проверил это на своем ноутбуке и delete p; кажется, работает нормально, но я обеспокоен о возможности неопределенного поведения. Может ли кто-нибудь указать мне на официальный документ или стандарт, который подтверждает, действительно ли это неопределенное поведение или это приемлемая практика?

Подробнее здесь: https://stackoverflow.com/questions/792 ... t1-pointer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»