Teoricamente posso dire cheDoes free (ptr) dove ptr è NULL memoria corrotta?
free(ptr);
free(ptr);
è una corruzione della memoria dato che stiamo liberare la memoria che è già stato liberato.
Ma cosa succede se
free(ptr);
ptr=NULL;
free(ptr);
come sistema operativo si comporterà in maniera indefinita non riesco a ottenere un'analisi teorica effettivo per questo su quello che succede. Qualunque cosa stia facendo, è questa corruzione della memoria o no?
È possibile liberare un puntatore NULL valido?
sicuro di C standard gratuita, ma in C++ delete (NULL) è perfettamente valido, quindi credo che libera (NULL) dovrebbe anche essere. –
@Pryank: 'delete NULL' non è valido in C++. delete può essere applicato ai valori null-pointer del tipo concreto, ma non a 'NULL'. 'delete (int *) NULL' è legale, ma non' delete NULL'. – AnT
quindi vuol dire che se un puntatore punta a NULL libero non esegue nulla. Ciò significa che !!!!!! ogni volta nella nostra codifica se vuoi liberare una memoria puoi semplicemente sostituire un libero (ptr) con ptr = NULL? – Vijay