Theoretisch kann ich das sagen
free(ptr);
free(ptr);
ist eine Speicherbeschädigung, da wir den bereits freigegebenen Speicher freigeben.
Aber was wenn
free(ptr);
ptr=NULL;
free(ptr);
Da sich das Betriebssystem undefiniert verhält, kann ich keine tatsächliche theoretische Analyse darüber erhalten, was passiert. Was auch immer ich tue, ist das Gedächtnisbeschädigung oder nicht?
Ist das Freigeben eines NULL-Zeigers gültig?
delete NULList in C ++ nicht gültig. delete kann auf Nullzeigerwerte vom konkreten Typ angewendet werden, nicht jedoch auf NULL. delete (int*) NULList legal, aber nicht delete NULL.
ptrauf den Speicher zeigen und ihn nicht aufrufen free, geht der Speicher verloren. Wenn Sie es NULLso einstellen, dass es nur den Speicher im Griff hat und undicht wird. Wenn ptr dies der FallNULL ist, freeist das Aufrufen kein Vorgang.
free(ptr)mit ptr = NULL. Niemand sagte so etwas.