Come sempre sono d'accordo con r0x.
Sul punto 5 vorrei aggiungere che nel 99% dei casi puntera' ad un'area di memoria non valida. Dopo un delete e' sovente meglio assegnare il valore NULL al puntatore, per evitare di fare confusione (e soprattutto di ri-deletarlo, con effetti disastrosi), infatti delete (a meno di implemetazioni stravaganti del compilatore) non modifica il valore contenuto nel puntatore, in quanto in C/C++ tutti i passaggi di variabile sono per valore (salvo diversa ed esplicita dichiarazione del programmatore). Quindi il tuo puntatore passato alla delete, consente alla delete di accedere alla memoria puntata dal tuo puntatore, non al puntatore stesso, in breve, se cout << p; stampa 100, allora delete p; cout << p; stampa 100, solo che 100 adesso non e' piu' valido.

Rispondi quotando