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 NULL
ist in C ++ nicht gültig. delete kann auf Nullzeigerwerte vom konkreten Typ angewendet werden, nicht jedoch auf NULL
. delete (int*) NULL
ist legal, aber nicht delete NULL
.
ptr
auf den Speicher zeigen und ihn nicht aufrufen free
, geht der Speicher verloren. Wenn Sie es NULL
so einstellen, dass es nur den Speicher im Griff hat und undicht wird. Wenn ptr
dies der FallNULL
ist, free
ist das Aufrufen kein Vorgang.
free(ptr)
mit ptr = NULL
. Niemand sagte so etwas.