Teoricamente posso dirlo
free(ptr);
free(ptr);
è un danneggiamento della memoria poiché stiamo liberando la memoria che è già stata liberata.
Ma cosa succede se
free(ptr);
ptr=NULL;
free(ptr);
Poiché il sistema operativo si comporterà in modo indefinito, non posso ottenere un'analisi teorica effettiva di ciò che sta accadendo. Qualunque cosa stia facendo, è questa corruzione della memoria o no?
La liberazione di un puntatore NULL è valida?
delete NULL
non è valido in C ++. delete può essere applicato ai valori del puntatore nullo di tipo concreto, ma non a NULL
. delete (int*) NULL
è legale, ma non lo è delete NULL
.
ptr
punta alla memoria e non la richiami free
, la memoria perderà. Impostandolo su si NULL
perde il controllo della memoria e si perde. Se ptr
succedeNULL
, la chiamata free
è una non operazione.
free(ptr)
con ptr = NULL
. Nessuno ha detto niente del genere.