Dynamic Memory, malloc(), free()

Kategori: C , 25 Haziran 2019 , JanFranco


Bellekten dinamik bir şekilde yer tahsil etmek için 4 fonksiyon kullanırız. Bunlar malloc, realloc, calloc ve free fonksiyonlarıdır. Bu dökümantasonda malloc ve free fonksiyonlarını göreceğiz. malloc en temel yer tahsil etme fonksiyonudur ve aşağıdaki şekilde tanımlanır:


malloc(<number of bytes>);
Örnek bir kullanım:
int *p;

p = malloc(sizeof(int)*24);
Yukarıda malloc fonksiyonu ile bellekten 96 byte yer ayırttık. Çoğu sistemde integer değerler 4 byte'lık yer tutar. Burada sizeof(int) diyerek 24 * 4 = 96 işlemini yapmış olduk. Ayrıca malloc fonksiyonu bir pointer return eder. Bellekten 96 byte'lık yer ayırttık ve return edilen pointer, 96 byte'lık alanın başlangıcını işaret etmekte. Hata durumlarında da fonksiyon NULL pointer döner. Böylece hata kontrolü yapabiliriz:
int *p;

p malloc(sizeof(float)*50);

if(p == NULL){
    printf("Error, while allocating the memory!");
}
Bir başka yazım şekli görelim:
int *p;

if((p = malloc(100)) == NULL){
    printf("Error, while allocating the memory!");
}
malloc fonksiyonu ile yer tahsil ettik. Kullanmadığımız durumlarda bu yeri, alanı temizlemeliyiz. Program sonlandığında işletim sistemi zaten bu alanı temizlemekte ancak uzun işlemler yapan bir program yazdığımızda işimiz bittiğinde bu alanı mutlaka silmeliyiz. Bir örnek görelim:
int *p;

p = malloc(sizeof(int)*5000);

...

free(p);


Sonraki Yazı: Dynamic Memory, realloc(), calloc()
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın