Anahtar Farkı – Statik ve Dinamik Bellek Tahsisi
Programlamada, hesaplama verilerini depolamak gerekir. Bu veriler bellekte saklanır. Bilgisayar programlamasında veri depolamak için bellek konumları değişkenler olarak bilinir. Değişkenlerin belirli bir veri türü vardır. Bu nedenle, programları çalıştırmak için bellek ayrılır. Bellek iki şekilde tahsis edilebilir. Bunlar Statik bellek ayırma ve Dinamik bellek ayırmadır. Statik bellek tahsisinde, bellek tahsis edildikten sonra değiştirilemez. Bellek yeniden kullanılamaz. Ancak dinamik bellek tahsisinde, bellek tahsis edildikten sonra değiştirilebilir. Statik ve dinamik bellek ayırma arasındaki temel fark, statik bellek tahsisinde bellek tahsis edildikten sonra bellek boyutunun sabitlenirken dinamik bellek tahsisinde bellek tahsis edildikten sonra bellek boyutunun değiştirilebilmesidir.
Statik Bellek Tahsisi Nedir?
Statik bellek tahsisinde, tahsis edilen bellek sabittir. Bellek tahsis edildikten sonra değiştirilemez. Bellek artırılamaz veya az altılamaz. Örneğin, C dilinde programcı int x yazarsa, bu değişkenin bir tamsayı değeri depolayabileceği anlamına gelir. Bayt sayısı bilgisayara bağlıdır. Diziler de olabilir. Örneğin. int x [5]; Bu x, aynı türden bir veri dizisini depolayabilen bir dizidir. Beş tamsayı elemanı saklayabilir. Beşten fazla öğe depolayamaz. Java'da bir dizi şu şekilde oluşturulabilir, int arr=new int[5]; 'arr' dizisi 5 tamsayı değeri saklayabilir ve bundan fazlasını depolayamaz.
Şekil 01: Bellek Tahsis Yöntemleri
Statik bellek tahsisinde, değişkenler tahsis edildikten sonra kalıcı kalırlar. İlk tahsisten sonra programcı belleği yeniden boyutlandıramaz. Programcı 10 eleman depolayabilecek bir dizi tahsis ettiyse, belirtilen miktardan daha fazla değer depolamak mümkün değildir. Programcı başlangıçta 10 eleman tutabilen, ancak yalnızca 5 elemana ihtiyaç duyan bir dizi tahsis ettiyse, o zaman bir bellek israfı vardır. Bu belleğe artık ihtiyaç yoktur, ancak belleği yeniden kullanmak da mümkün değildir. Statik bellek tahsisi sabittir ancak uygulama basit ve kolaydır ve ayrıca hızlıdır.
Dinamik Bellek Tahsisi Nedir?
Bazen hafızanın boyutunu değiştirmek gerekir. Böylece bellek dinamik olarak tahsis edilebilir. Veri öğelerinin eklenmesine ve silinmesine bağlı olarak, bellek büyüyebilir veya küçülebilir. Dinamik bellek ayırma olarak bilinir.
C dilinde, stdlib.h başlık dosyasında, dinamik bellek ayırma için dört işlev vardır. Bunlar calloc, malloc, realloc ve free'dir. malloc() işlevi, gerekli bir bayt boyutu tahsis eder ve ayrılan belleğin ilk baytını işaret eden bir void işaretçisi döndürür. calloc() işlevi, gerekli bir bayt boyutunu tahsis eder ve bunları sıfır olarak başlatır. Ardından belleğe bir boşluk işaretçisi döndürür. free() işlevi, ayrılan belleği yeniden tahsis etmek için kullanılır. Ve realloc işlevi, önceden tahsis edilmiş belleği değiştirebilir. calloc veya malloc kullanarak bellek ayırdıktan sonra, bellek boyutu sabitlenir, ancak realloc işlevi kullanılarak artırılabilir veya az altılabilir. Java'da koleksiyonlar, dinamik bellek ayırma için kullanılabilir.
Dinamik bellek ayırmanın ana avantajı, bellek tasarrufu sağlamasıdır. Programcı gerektiğinde bellek ayırabilir veya belleği serbest bırakabilir. Yürütme sırasında bellek yeniden tahsis edilebilir ve gerekli olmadığında belleği boş altabilir. Dinamik bellek ayırma, statik bellek ayırmadan daha verimlidir. Bir dezavantaj, dinamik bellek ayırmanın uygulanmasının karmaşık olmasıdır.
Statik ve Dinamik Bellek Tahsisi Arasındaki Benzerlikler Nelerdir?
- Her ikisi de bellek ayırma mekanizmalarıdır.
- Her ikisi de programcı tarafından manuel olarak uygulanmalıdır.
Statik ve Dinamik Bellek Tahsisi Arasındaki Fark Nedir?
Statik ve Dinamik Bellek Tahsisi |
|
Statik bellek ayırma, bir bellek ayırma yöntemidir ve bellek tahsis edildikten sonra sabitlenir. | Dinamik bellek ayırma, bir bellek ayırma yöntemidir ve bellek tahsis edildikten sonra değiştirilebilir. |
Modifikasyon | |
Statik bellek ayırmada, ilk ayırmadan sonra yeniden boyutlandırmak mümkün değildir. | Dinamik bellek tahsisinde, bellek buna göre küçültülebilir veya büyütülebilir. |
Uygulama | |
Statik bellek ayırmanın uygulanması kolaydır. | Dinamik bellek ayırmanın uygulanması karmaşıktır. |
Hız | |
Statik bellekte ayırma yürütmesi dinamik bellek ayırmadan daha hızlıdır. | Dinamik bellekte, ayırma yürütmesi statik bellek ayırmadan daha yavaştır. |
Bellek Kullanımı | |
Statik hafıza tahsisinde, kullanılmayan hafıza yeniden kullanılamaz. | Dinamik bellek ayırma, belleğin yeniden kullanılmasını sağlar. Programcı gerektiğinde daha fazla bellek tahsis edebilir. Gerektiğinde hafızayı serbest bırakabilir. |
Özet – Statik ve Dinamik Bellek Tahsisi
Programlamada, Statik bellek ayırma ve dinamik bellek ayırma, bellek ayırmaya yönelik iki mekanizmadır. Statik ve dinamik bellek tahsisi arasındaki fark, statik bellek tahsisinde bellek tahsis edildikten sonra bellek boyutunun sabitlenmesi, dinamik bellek tahsisinde ise bellek tahsis edildikten sonra bellek boyutunun değiştirilebilmesidir. Programcı, uygulamaya bağlı olarak belleğin statik mi yoksa dinamik mi olacağına karar verebilir.
Statik ve Dinamik Bellek Tahsisi'nin PDF'sini indirin
Bu makalenin PDF sürümünü indirebilir ve alıntı notuna göre çevrimdışı amaçlarla kullanabilirsiniz. Lütfen PDF sürümünü buradan indirin: Statik ve Dinamik Bellek Tahsisi Arasındaki Fark