Programlama dilleri, bilgisayarın bellek kaynaklarını etkili bir şekilde kullanabilmemizi sağlar. C programlama dilinde dinamik bellek yönetimi, programcılara bellek kullanımını daha esnek ve verimli hale getirme imkanı sunar. Dinamik bellek yönetimi, bellekte yer ayırmak, bu alanı kullanmak ve daha sonra geri vermek için kullanılan yöntemleri içerir. Bu yöntemlerin en çok kullanılanları calloc, malloc ve free’dir. Bu yazımızda, C programlama dilinde dinamik bellek yönetimini daha ayrıntılı bir şekilde ele alacağız ve bu işlevlerin nasıl kullanılacağını örneklerle göstereceğiz.

C Dilinde Dinamik Bellek Yönetimi

Dinamik bellek yönetimi, programın çalışma zamanında bellekte yer ayırmak için kullanılan bir dizi işlevi içerir. Bu işlevler, bellek kullanımını daha etkili ve esnek hale getirir ve programcılara bellek yönetimini kontrol etme imkanı sağlar. C dilinde dinamik bellek yönetimi için temel işlevler calloc, malloc ve free’dir.

C Programlama calloc()

Bu işlev, bellekte belirli bir sayıda blok oluşturmak için kullanılır. calloc(), bellekte yer ayırırken ayrıca belleği sıfırlar, yani ayırılan blokların tümünü sıfır değeriyle doldurur. Hemen örnek br kullanım görelim.

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *dizi;
    int boyut, i;
    
    printf("Dizi boyutunu girin: ");
    scanf("%d", &boyut);
    
    dizi = (int *)calloc(boyut, sizeof(int));
    if(dizi == NULL) {
        printf("Bellek hatası! Yeterli bellek yok.");
        exit(1);
    }
    
    printf("Dizi elemanlarını girin:\n");
    for(i = 0; i < boyut; i++) {
        scanf("%d", &dizi[i]);
    }
    
    printf("Girilen dizi:\n");
    for(i = 0; i < boyut; i++) {
        printf("%d ", dizi[i]);
    }
    
    free(dizi);
    
    return 0;
}

Bu program, kullanıcıdan bir dizi boyutu alır ve calloc() işlevini kullanarak bellekte o boyutta bir dizi için yer ayırır. Ardından, kullanıcıdan dizi elemanlarını alır ve girilen diziyi ekrana yazdırır. Son olarak, belleği free() işleviyle geri verir.

Bu yazı dikkatini çekebilir.   Java For Döngüsü

Örneğin, programı çalıştırdığınızda aşağıdaki gibi bir çıktı alabilirsiniz:

Dizi boyutunu girin: 5
Dizi elemanlarını girin:
10
20
30
40
50
Girilen dizi:
10 20 30 40 50

C Programlama malloc()

malloc() işlevi, bellekte belirli bir sayıda bayt ayırmak için kullanılır. Örnek kullanımını görelim.

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *dizi;
    int boyut, i;
    
    printf("Dizi boyutunu girin: ");
    scanf("%d", &boyut);
    
    dizi = (int *)malloc(boyut * sizeof(int));
    if(dizi == NULL) {
        printf("Bellek hatası! Yeterli bellek yok.");
        exit(1);
    }
    
    printf("Dizi elemanlarını girin:\n");
    for(i = 0; i < boyut; i++) {
        scanf("%d", &dizi[i]);
    }
    
    printf("Girilen dizi:\n");
    for(i = 0; i < boyut; i++) {
        printf("%d ", dizi[i]);
    }
    
    free(dizi);
    
    // Belleğin serbest bırakıldığından emin olmak için işaretçiyi NULL yapabilirsiniz.
    dizi = NULL;
    
    return 0;
}

Bu program, kullanıcıdan bir dizi boyutu alır ve malloc() işlevini kullanarak bellekte o boyutta bir dizi için yer ayırır. Ardından, kullanıcıdan dizi elemanlarını alır ve girilen diziyi ekrana yazdırır. Son olarak, belleği free() işleviyle geri verir. Belleği serbest bıraktıktan sonra, işaretçiyi NULL olarak atamak iyi bir uygulama yöntemidir, böylece belleği yanlışlıkla tekrar kullanmaya çalışmadan önce kontrol edebilirsiniz.

C Programlama free()

Dinamik olarak ayrılmış belleği geri vermek için kullanılan free() işlevi, bellekteki bir bloğun serbest bırakılmasını sağlar.


Bu yazımızda, C programlama dilinde dinamik bellek yönetimi konusunu ve calloc(), malloc() ve free() işlevlerini açıkladık. Diğer C programlama dili derslerimizi okumak isterseniz buradan tümüne ulaşabilirsiniz.