Sabonis
24-01-2008, 10:10
Se ho un codice di questo tipo:
Time *timePtr;
timePtr = new Time;
delete timePtr;
timePtr->funzionemembro();
ho visto che è possibile eseguire una funzione membro dopo avere cancellato l'oggetto con esiti imprevedibili, per evitare questo secondo voi è buona norma mettere 0 nel puntatore timePtr?
In questo modo intendo:
Time *timePtr;
timePtr = new Time;
delete timePtr;
timePtr = 0;
timePtr->funzionemembro();
In questo modo dovrei avere un segmentation fault e riuscirei ad accorgermi dell'errore.
Altra domanda: Se io mi dimentico di cancellare un oggetto un una qualsiasi cosa allocata tramite la new, quando chiudo il programma la memoria viene comunque liberata????
Time *timePtr;
timePtr = new Time;
delete timePtr;
timePtr->funzionemembro();
ho visto che è possibile eseguire una funzione membro dopo avere cancellato l'oggetto con esiti imprevedibili, per evitare questo secondo voi è buona norma mettere 0 nel puntatore timePtr?
In questo modo intendo:
Time *timePtr;
timePtr = new Time;
delete timePtr;
timePtr = 0;
timePtr->funzionemembro();
In questo modo dovrei avere un segmentation fault e riuscirei ad accorgermi dell'errore.
Altra domanda: Se io mi dimentico di cancellare un oggetto un una qualsiasi cosa allocata tramite la new, quando chiudo il programma la memoria viene comunque liberata????