05 – RAM – Heap & Pointer – Referans

Bir önceki yazımızda RAM üzerinde özel bir alan olan Stack’ten (yığın) bahsetmiştik. Bu yazımızda yine özel bir alan olan Heap’ten bahsedeceğiz.

Heap’ten bahsetmeden önce Pointer ve Referans değer kavramlarından bahsedelim.

Pointer ve Referans Nedir?

RAM üzerinde veriler saklanırken adresleri ile birlikte saklanırlar. Pointer (işaretleyici) adından da anlaşılacağı üzere bir işaretleyicidir. İçerisinde adres tutar. Bu pointer vasıtasıyla istenen objenin adresi bilindiği için objeye erişim sağlanır. Aşağıdaki görsel ile bakalım:

Burada *obje aslında bir pointer’dır. İçerisinde ise gerçek objenin adresi bulunur. Pointer aslında mahallenin bakkalıdır denebilir. Bakkala mahalledeki herhangi birinin adresini sorduğunuzda size cevap verecektir. Daha sonra bu adres ile istediğiniz objeye erişebilirsiniz.

Yukarıda “obje” ile nitelediğimiz kavrama daha sonra daha detaylı bakcağız. Şimdilik pointer-heap-stack kavramları üzerine odaklanacağız.

Burada obje dediğimiz kavram aslında referans tiptir. (Reference Type) Daha önce primitive verilerden bahsederken Value Type kavramını kullanmıştık. Reference Type’lar (class’lar) program içerisinde taşınan değerlerdir. Örneğin, insan bir objedir ve biz nereye gidersek gidelim özelliklerimizi taşırız. Örneğin saçımız uzundur, berbere gidip saçımızı kestirdiğimizde saçımız artık kısadır. Ertesi gün işe gittiğimizde saçımız yine kısa olacaktır. İşte referans değerler üzerinde yapılan değişiklik kalıcıdır.

Özet

  • Büyük veriler burada saklanırlar
  • Program içerisinde birden fazla noktada gezecek olan verilerdir.
  • Pointer hiç değişmez, değişen Heap’teki veridir. (adres değişmez, ama adresteki evin özelliği değişebilir.)
  • Veriye erişim pointer üzerinden olur.
  • Pointer Stack’te durur.