bilgisayarda stack'in sebep olduğu aşırı kısıtlayıcı ve genelde değiştirmeye açık olmayan yapısını esnetmek amacıyla geliştirilmiş bir hafıza bölgesidir. pointers, yani işaretçiler kullanılarak hafızanın o kısmına erişmek mümkündür, aksi takdirde tüm işlemlerinizi stack bölgesinde gerçekleştirirsiniz. ayrıca, heap de günün sonunda stack bölümüne işaretçilerle eklendiğinden yazılımcı için tam olarak özgür bir ortam oluştuğundan bahsedilemez.

peki niye böyle bir şeye ihtiyaç duyulur? en basitinden şu örnek verilebilir: dizilerde normalde boyutu bir değişken olarak tutup kafanıza göre değiştiremezsiniz. ama saklayacağınız verilerin sayısı değişeceğinden buna ihtiyaç duyabilirsiniz. işte hal böyleyken heap'e başvurulur.

peki gene diyebilirsiniz ki bu nasıl mümkün olabilir? heap, stack gibi katı bir sıra gözetmez. eğer ilk boş yerin boyutu sizin ihtiyaç duyduğunuzdan küçükse bir sonraki boş alana geçilir ve aynı sorgu orada da takip edilir. ta ki istenen nitelikte bir boş alan buluncaya kadar da buna devam edilir.

diziyi başka bir yere taşıma işlemini c++'ta şöyle ifade edebiliriz:*

#include <iostream>

int main()
{
int *a = new int [5];

int i, h;

for (i = 0; i < 5; i++)
{
a[i] = i * i;
}

int *k = new int [8];

for (h = 0; h < 5; h++)
{
k[h] = h * h;
}

a[i] = k [h];

delete [ ] a;

a = k;
}

böylece hem dizimizi taşımış, hem ekstra alan açmış hem de önceki alanın artık boş olduğunu bilgisayara iletmiş olduk.
devamını gör...

bu başlığa tanım girmek için olabilirsiniz.

zaten üye iseniz giriş yapabilirsiniz.

"heap" ile benzer başlıklar

normal sözlük'ü kullanarak 3. parti dahil tarayıcı çerezlerinin kullanımına izin vermektesiniz. Daha detaylı bilgi için çerez ve gizlilik politikamıza bakabilirsiniz.

online yazar listesini görmek için lütfen giriş yapın.
zaman tüneli köftehor rehberi portakal normal radyo kütüphane kulüpler renk modu online yazarlar puan tablosu yönetim kadrosu istatistikler iletişim