Недавно мы обнаружили, что какой-то код использует new T[1] систематически (должным образом соответствует delete[]), и мне интересно, насколько это безопасно, или есть некоторые недостатки в сгенерированном коде (в пространстве или времени/производительности). Конечно, это было скрыто за слоями функций и макросов, но это не относится к делу.
Логично, что мне кажется, что оба похожи, но они?
Разрешено ли компиляторам преобразовывать этот код (используя литерал 1, а не переменную, а через слои функций), чтобы 1 превращался в переменную аргумента 2 или 3 раза, прежде чем он достигнет кода с помощью new T[n]), в скаляр new T?
Любые другие соображения/вещи, чтобы знать о разнице между этими двумя?