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