Teorik olarak şunu söyleyebilirim
free(ptr);
free(ptr);
Zaten serbest bırakılan belleği boşalttığımız için bir bellek bozulmasıdır.
Ama ya eğer
free(ptr);
ptr=NULL;
free(ptr);
İşletim sistemi tanımlanmamış bir şekilde davranacağından, neler olduğuna dair bunun için gerçek bir teorik analiz elde edemiyorum. Ne yaparsam yapayım, bu bellek bozulması mı, değil mi?
NULL işaretçisi serbest bırakmak geçerli midir?
delete NULLC ++ 'da geçerli değil. delete somut türdeki boş işaretçi değerlerine uygulanabilir, ancak uygulanamaz NULL. delete (int*) NULLyasal, ancak değil delete NULL.
ptr. Hafızayı gösteriyorsa ve onu çağırmazsanız free, hafıza sızdırır. Bunu NULLsadece hafıza üzerindeki kontrolünüzü kaybedecek şekilde ayarlamak ve sızıntılara neden olur. Eğer ptr olurNULL , çağrı freeno-operasyonlar olduğunu.
free(ptr)ile ptr = NULL. Kimse böyle bir şey söylemedi.