Sarkan Bir İşaretçi Nedir?

Sarkan bir işaretçi, bir işaretçi nesnesi artık varolmayan başka bir nesneyi işaret ettiğinde, nesne yönelimli kodlamada meydana gelen bir programlama hatasıdır. Bu örnekte, bir işaretçi bir fare işaretçisi değil, kullanıcıyı başka bir nesneye göndermesi amaçlanan bir işaretçi nesnesidir. Bu kusur zamanla daha kötüye gidebilecek ince hatalar yaratır ve aynı zamanda yetenekli bilgisayar korsanlarının saldırabileceği bir güvenlik sorunu sunar. Bir programcı işaret ettiği nesneyi sildiğinde, ancak işaretçinin kendisini silmemesi durumunda, sarkan bir işaretçi görülür.

Kodlamanın nesnelere ayrıldığı nesne yönelimli kodlamada, işaretçi olarak adlandırılan bir örnek vardır. İşaretçi örneği programın herhangi bir yerine, tipik olarak bir menüye yerleştirilir ve kullanıcıyı başka bir nesneye yönlendirir. Örneğin, kullanıcı bir menünün bir bölümünü vurguluyorsa, başka bir menü - aşağı açılır - görünür. Bu, programcının, bölümü sıkıştırmadan tek bir bölümde birkaç nesne ayarlamasını sağlar.

Sarkan işaretçi hatası, bir programcı işaret edilen nesneyi sildiğinde ortaya çıkar. Programcı aynı zamanda işaretçi örneğini de silerse, hiçbir sorun çıkmaz. Programcı, işaretçiyi kod içinde unutur ve tutarsa, bu sarkan bir işaretçi oluşturur ve hem kalite hem de güvenlik sorunları sunar.

Kalite açısından, sarkan bir işaretçi özensiz görünüyor ve ince böcekler yaratıyor. Bunun nedeni programın nasıl hareket edeceğini bilmemesidir, çünkü bir şey yapması söylenir, ancak nesne gittiği için yapamaz. Bu hareket rastgele kod oluşturur veya kodu, algılanması zor küçük, ince şekillerde bozar. Bu hatalar, programı biraz daha yavaş hareket ettirecek kadar küçük olabilir, ancak sonunda programı - ve hatta bilgisayarı - çalışmamasını sağlayabilir.

Sarkan işaretçiler içeren programların çoğu başlangıçta çalışır ve hataların ortaya çıkmasından önce aylarca hatta yıllarca çalışmaya devam edebilir. Sarkan göstergenin formülde olduğu anlamına gelen hesaplamalar yapan programlar bile, hala basit hesaplamalar yapabilir. Sarkan işaretçiler bulmanın bu kadar zor olmasının sebeplerinden biri de bu.

2007 yılına kadar, sarkan işaretçi sadece teoride güvenlik sorunları yarattı. Watchfire® yazılım şirketi, sarkan işaretçilerden nasıl yararlanılabileceğini gösteren ve güvenlik riskini gerçeğe dönüştüren bir program yaptı. Bilgisayar korsanları bu hatayı kullanarak bir programa sızabilir ve kendi kodlarını hatalı programa girebilir.