Yığın Taşması Nedir?
Yığın taşması, belirli bir bellek
bloğuna veri yazma girişiminin blokta kalmadığı için başarısız olduğu bir
programlama hatasıdır. Bu tür bir hata, arabellek taşmaları, yığın taşmaları ve
yığın arabellek taşmaları ile aynı şekilde kredi notum düşük nasıl kredi çekerimgerçekleşir.
Bu tür hatalar arasındaki fark , kullanılan bilgisayar veri yapısına bağlıdır
ve ortak özellik, tutulması gereken boş alan olduğundan daha fazla veri yazmak
için bir girişimde bulunmasıdır.
Yığın taşması belirtileri, kullanılan bilgisayar diline ve
hata raporlama makinesine bağlı olarak değişebilir . C ++ 'da, bir yığın
taşması genellikle kendini bölümleme hatası olarak gösterir ve sıklıkla
taşmanın nerede ve nasıl gerçekleştiğini belirlemek için verilen hiçbir ek
bilgi yoktur. Java'da bir taşma genellikle, makul bir şekilde ayrıntılı bir
hata dosyası veren bir sanal makine kazasında sonuçlanır. Bir taşmanın meydana
geldiği dilden bağımsız olarak, taşma, her zaman doğru hata ayıklama ve
orijinal taşma kaynağının tanımlanmasıyla düzeltilebilir .
Açık bellek yönetimi sunan
bilgisayar dilleri, yığın taşmasına karşı koruma sağlamak için genellikle daha
kolaydır. Yaygın olarak kabul edilen programlama pratiği genellikle bir
programın ayırdığı her bellek segmenti için programın kendini silmesi
gerektiğini belirtir. C ++ bu mekanizmaya izin verir ve bu şekilde dikkatli bir
izleme, bir programın en az kullandığı bellek miktarını koruyabilir. Açık
bellek yönetimi gelir belgesiz kredi veren bankalarsunmayan ve bunun yerine örtük bellek yönetimi kullanan
diller, yığın taşması hatalarından korunmak için daha zordur. Java, kendi
belleğini sanal makinesinde işler, böylece veriler daha fazla yer açmak için
açık bir şekilde silinemez.
Acemi programcıların yaygın bir hatası, kendi bellek
yönetimini yürüten bilgisayar dillerinde yığın taşması olamayacağını
varsaymaktır. Bu başlangıçta makul gibi gözükse de, aslında durum böyle
değildir. Gizli bellek yönetimine sahip diller genellikle gereksiz bellek
bloklarını serbest bırakan çöp toplayıcılarına sahiptir, ancak bu çöp
toplayıcıları her zaman bir programcının beklediği zamanda çalışmazlar . Çöp
toplayıcılarına güvenmek nispeten tehlikelidir ve bir programı her zaman taşma
hatasından koruyamaz.
Taşma hataları, felaketsiz olabilir ve tüm programı
durdurabilir veya neredeyse sessiz olabilir ve bir programın devam etmesine izin
verebilir. Bu ikinci tür hatalar genellikle bulmak en zor olanıdır, çünkü bir
kod satırından önce gelen bir hatadan kaynaklanan bir hata oluşabilir. Yığın
taşması genellikle bir programın tamamını aramayı gerektirmez, ancak bir
program taşma işleminden sonra ne kadar uzun sürebilirse, hata bulmak ve
düzeltmek daha zor olabilir.
Yorumlar
Yorum Gönder