Является ли 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

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