View Single Post
Old 04-04-2011, 17:00   #12
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
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
__________________
*ToMmO*

devlog | twitter

Ultima modifica di Tommo : 04-04-2011 alle 17:03.
Tommo è offline   Rispondi citando il messaggio o parte di esso