Heap Ne Demek?
Yayın: · Son güncelleme:
Heap Ne Demek? Kısaca
Heap, yazılımda iki anlamda kullanılır: programın çalışırken dinamik olarak bellek ayırdığı geniş bellek bölgesi ve en büyük ya da en küçük elemanı her zaman en üstte tutan ağaç biçimli veri yapısı.

Heap ne demek?
Heap, İngilizcede "yığın, küme" anlamına gelir. Yazılımda iki farklı kavram bu adla anılır. Biri programın dinamik bellek bölgesidir, diğeri ise özel bir ağaç veri yapısıdır. İkisi arasında isim dışında doğrudan bir bağ yoktur.
Bellek bölgesi olarak heap
Program çalışırken boyutu önceden bilinmeyen verilere yer gerekir. Kullanıcının yüklediği 50 fotoğraflık bir albüm ya da veritabanından gelen sipariş listesi buna örnektir. Bu veriler heap'te tutulur. Heap geniştir ve buradaki veri, onu oluşturan fonksiyon bittikten sonra da yaşamaya devam edebilir.
Bu esnekliğin bir bedeli vardır. Heap'ten yer ayırmak stack'e göre daha yavaştır ve işi biten verinin temizlenmesi gerekir. C ve C++'ta bu iş geliştiricidedir. Java, Python ve JavaScript'te ise çöp toplama mekanizması devreye girer. Temizlenmeyen heap verisi bellek sızıntısına dönüşür.
Veri yapısı olarak heap
Heap veri yapısı, her ebeveynin çocuklarından büyük (max-heap) ya da küçük (min-heap) olduğu bir ikili ağaçtır. Bu sayede en büyük ya da en küçük eleman her zaman köktedir ve ona anında ulaşılır.
Bir hastanenin acil servisini düşünün. Hastalar geliş sırasına göre değil, durumlarının ciddiyetine göre muayene edilir. Yazılımda bu mantığı kuran öncelik kuyrukları genellikle heap ile yazılır. Yeni bir eleman eklemek ya da en öndekini çıkarmak, eleman sayısı arttıkça yavaşça büyüyen logaritmik bir sürede tamamlanır.
Sıkça Sorulan Sorular
Heap ile stack arasındaki fark nedir?
Stack küçük, hızlı ve otomatik yönetilen bir bellek bölgesidir; fonksiyon bitince temizlenir. Heap daha büyüktür, verilerin ömrü daha uzundur ve temizlenmesi elle ya da çöp toplayıcıyla yapılır.
Heap veri yapısı nerede kullanılır?
Öncelik kuyruklarında, en kısa yol algoritmalarında ve heap sort adı verilen sıralama yönteminde kullanılır. En acil işi her zaman en önde tutmak gerektiğinde tercih edilir.