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 NULL
C ++ 'da geçerli değil. delete somut türdeki boş işaretçi değerlerine uygulanabilir, ancak uygulanamaz NULL
. delete (int*) NULL
yasal, ancak değil delete NULL
.
ptr
. Hafızayı gösteriyorsa ve onu çağırmazsanız free
, hafıza sızdırır. Bunu NULL
sadece hafıza üzerindeki kontrolünüzü kaybedecek şekilde ayarlamak ve sızıntılara neden olur. Eğer ptr
olurNULL
, çağrı free
no-operasyonlar olduğunu.
free(ptr)
ile ptr = NULL
. Kimse böyle bir şey söylemedi.