C’de Hafıza Yönetimi: Heap-Stack Konusu

heap-stack

Hafıza yönetimi bir işletim sisteminin temel işlevlerinden birisidir. Multi-tasking çalışan bütün işletim sistemlerinde her process kendisine ait bir hafıza alanında çalışır. Böylece (normal şartlarda) programların hafıza adresleri birbirine karışmaz. Yani, iki program … koduyla bir hafıza alanına erişmek istediğinde, gerçekte ikisi RAM üzerinde farklı alanlara erişir.

Bir program çalıştırılmak üzere hafızaya yüklendiğinde temel olarak üç hafıza bölgesi (segment) içinde organize edilir: text segmenti, stack segmenti ve heap segmenti.

  • Text segmenti: Derlenmiş programın kendisi tutulur. Programcının yazdığı kodlar derleyici tarafından işlemcinin anlayacağı şekilde makine koduna çevrilir ve binary olarak text segmentinde tutulur.
  • Heap segmenti: program çalışma esnasında malloc() veya calloc() gibi fonksiyonlarla hafızadan yer aldığında, heap segmentinden bir alan tahsis edilir. Heap’ten daha fazla alan alındıkça, heap yukarı doğru büyür.
  • Stack segment: Lokal değişkenleri tutmak ve fonksiyonlara argüman vererek çağırmak için kullanılır. Stack aşağı doğru büyür.
Tagged