C programlama’da Dangling Pointer Nedir?

Bir pointer serbest bırakıldıktan sonra (Freed Pointer), önceki işaret ettiğini adresi işaret etmeyi sürdürüyorsa buna dangling pointer denir. Dangling pointer geçerli bir nesneye işaret etmemektedir.

Dangling pointer’ın kullanımı çeşitli türdeki problemlere sebep olur;
*Memory’e erişim sırasında tahmin edilemeyen davranışlara sebep olur.
*Eğer memory’e erişimde ulaşılan adres artık erişilebilir değilse, segmentation fault’a sebep olur.
*Potansiyel güvenlik risklerine sebep olur.

Yukarıdaki sorunlar aşağıdaki durumlarda meydana gelir;
*Memory’e pointer free yapıldıktan sonra erişmek.
*Pointer, fonksiyon çağrılmasından sonra otomatik ömürlü değerin döndürülmesi.

Dangling Pointer örneği;

Asağıdaki örnekte dinamik bellek yönetimiyle standart C kütüphanesinden malloc fonksiyonunu çağırarak bellekte yer ayırdık. Ardından
integer pointerla bu adrese işaret ettik. Bu adrese 5 değerini atadık. Ardından free fonksiyonu serbest bıraktık. Ama heap memory’deki bu adresi pointer hala sürdürmeye devam edebilir. Dangling pointer’ın işaret ettiği adresde değer atamakta bilinmeyen bir davranışa sebep olabilir.

Bu durumdan dolayı serbest bırakılan pointer’a NULL değeri atamak gerekmektedir.

Bu yazı hakkında ne düşünüyorsun ?
  • Gereksiz 
  • Normal 
  • Faydalı 
  • Müthiş 
Sidar ATABEY

About Sidar ATABEY

Elektrik-Elektronik Mühendisi. Makine Mühendisliğinde yan dal programını tamamladı. 1 sene boyunca Erasmus Programı kapsamında Polonya Silesian University of Technology'de eğitim gördü.

View all posts by Sidar ATABEY →