Standart C Programlama Dili


5.7. Bellek Ayırma

Bazı durumlarda, programcı program için gereken ana bellek miktarını önceden belirleyemez. Örneğin, bu, büyük oranda program girdisine bağlı olabilir. Bir dosyayı sıraya sokan bir program, bütün dosyayı alacak kadar ana belleğe gereksinim duyabilir. Bir dosya istenildiği kadar uzun olabildiğine göre, yürütme esnasında, sistemin bize sağlayabileceği kadar daha fazla bellek elde edebilme yöntemine gereksinimimiz vardır.

Standart kütüphane, buna izin verecek bir fonksiyon, calloc(n,boy) içerir. İki argümanı size_t tipinden tamsayılar olmalıdır. boy boyunda n tane değişken tutabilecek sıfıra ilklenmiş bir bellek bloğuna bir gösterge döndürür.

Daha basit başka bir fonksiyon malloc(bayts)’tır ve bayts kadar bayttan oluşan bir bellek bloğuna bir gösterge döndürür. Argümanın tipi yine size_t’dir. size_t gerçekleştirmeye bağlı olan ve en büyük bellek boyunu saklayabilecek kadar büyük olan bir tamsayıdır.

free(g) fonksiyonu daha önce calloc veya malloc ile ayrılmış bulunan ve g ile gösterilen bellek bloğunu serbest bırakacaktır.

malloc ve calloc’un dönüş tipi ve free’nin argüman tipi genel gösterge tipi olan void *dır. void * tipi bekleyen bir fonksiyona bir gösterge argümanı geçirdiğinizde, bir kalıp kullanarak, bunu void * tipine dönüştürmeniz gerekir. Aynı şekilde, bir fonksiyon void * döndürüyorsa, bunu uygun gösterge tipine dönüştürmeniz gerekir. Her tip gösterge, herhangi bir bilgi yitimine uğramadan, void * tipine ve daha sonra eski tipine dönüştürülebilir. stdlib.h başlık dosyası bu fonksiyonlar için gerekli bildirimleri içerir ve bu bölümün sonunda bu fonksiyonları kullanan örnek bir program bulunmaktadır.