Sfortunatamente C++ duplica gran parte delle strutture di C, ma spesso lo fa saltando dei pezzi
Ci sono molti casi in cui quello che si vuole fare è proprio allocare della memoria non inizializzata per un'uso futuro, e in quel caso new oltre a essere lento è anche abbastanza pericoloso; ad esempio se fai new float*[n] ti dovrai ricordare di non chiamare delete, ma delete[].
Che per quanto mi riguarda è una schifezza, ed è anche inutilmente non trasparente rispetto a malloc/free, che se si sa cosa si sta facendo sono molto più chiari e sicuri (allochi n byte, se non riesce da NULL. Punto.).
Per non parlare di tutti quei casi in cui si manovrano i singoli byte, e allora malloc è perfetto.
E tra l'altro nemmeno new[] e delete[] chiamano i costruttori/distruttori
E vogliamo parlare dell'overload di new, o del fatto che new non ha un comportamento definito in caso di errore?
Io più imparo C++ più mi rendo conto di usare un "C con le classi", tanta, troppa roba "avanzata" in C++ è semplicemente stata realizzata male e complica soltanto la vita, partendo dalla STL per finire ai templates.
Quindi pls prima di dire boiate come "lol c'hai C++ usa new" pensateci