Use of Pointers For Lists

C++’ta diziler sabit uzunlukludur; yani program çalışırken bir diziyi doğrudan büyütüp küçültmek mümkün değildir. Bu yüzden, eleman ekleyip silmeyi destekleyen dinamik bir liste yapısı oluşturmak için bellek yönetimini kendimiz yapmamız gerekir. Aşağıdaki örnek, C++’ta new ve delete kullanarak basit bir dinamik dizi tabanlı liste (dynamic array list) yapısının nasıl uygulanacağını gösterir. Bu yapıda: Bu örnek, C++’ta manuel bellek yönetiminin nasıl […]

Pointer Şeması

C++’ta pointer şeması, bir nesnenin bellekte nerede yaşadığını, hangi pointer’ın ona sahip olduğunu ve ne zaman serbest bırakılması gerektiğini anlamanın temel yoludur. Düşük seviyeli dillerde bellek yönetimi manuel olduğu için, yanlış yapılan her işlem memory leak (bellek sızıntısı), dangling pointer (boşta kalmış pointer) veya use-after-free gibi hatalara yol açabilir. Bellek sızıntısı, heap’te ayrılan bir bölgenin hiçbir pointer tarafından işaret edilmemesi […]

Heap-Allocated 2D Structures in C++

C++ öğrenirken en çok zorlanılan konulardan biri, işin mutfağı olan manuel bellek yönetimi ve pointer yapılarıdır. Bugün çoğu modern dil bizim için bellekle ilgilense de, C++ hâlâ düşük seviye kontrolün ne anlama geldiğini öğretmek için altın standarttır. Özellikle çift pointer (int**) kullanarak 2D dinamik dizi oluşturmak, bilgisayar biliminde veri yapılarının bellek üzerinde gerçekte nasıl tutulduğunu anlamamızı sağlar. Bu örnekte: Bu, […]

A Basic Pointer Example

C++’ta pointer kavramı, dilin düşük seviyeli kontrol anlayışının temel parçasıdır. Burada artık yalnızca değerlerle değil, bu değerlerin bellekte nerede durduğu ile ilgilenilir. Pointer bir değeri değil, o değerin adresini taşır. Bu ayrım küçük görünür ama fonksiyon çağrılarında kimin neye dokunabildiğini belirler. Bir değeri fonksiyona gönderdiğinde kopya gönderilmiş olur. Bir pointer gönderildiğinde ise erişim gönderilir. Yani fonksiyon, çağıranın değişkenine doğrudan ulaşabilecek […]