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 NULLnon è 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.
ptrpunta alla memoria e non la richiami free, la memoria perderà. Impostandolo su si NULLperde 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.