Да, строго, когда вы используете delete[]
статический тип указателя, который вы delete[]
должны соответствовать типу массива, который вы изначально выделили, или вы получите неопределенное поведение.
Обычно во многих реализациях delete[]
вызывается для void*
, который на самом деле является массивом типа, у которого нет нетривиальных деструкторов, но это не гарантируется.
delete[] buffer
или
delete[] (char*)something
оба будут действительны.