CodeBlanks Logo Icon CodeBlanks

malloc

  • C kursu
  • Başlangıç
  • Ders 102/116
  • 5 dk

malloc ile heap'ten bellek ayırmayı öğrenirsin.

malloc: heap bellek ayırma

malloc heap'ten bellek ayırır ve başlangıç adresini döndürür. <stdlib.h> başlığıyla gelir. İmzası void *malloc(size_t size) biçimindedir.

int *p = malloc(sizeof(int));
*p = 100;
// p, heap'teki 4 baytlık alanı gösterir

sizeof(int) bir int'in bayt boyutunu verir; bu, taşınabilir kod yazmak için şarttır. malloc ayrılan belleği sıfırlamaz; içinde eski veri kalabilir. Dönüş değeri void * olduğu için herhangi bir işaretçiye doğrudan atanabilir.

sizeof ile taşınabilir boyut

malloc'a her zaman sizeof ile ver. Bu, türün bayt boyutunu derleyiciye sorar; farklı sistemlerde aynı kod çalışır.

int *p = malloc(sizeof(int));
double *d = malloc(sizeof(double));
int *arr = malloc(5 * sizeof(int));

Son örnekte 5 elemanlı bir int dizisi için yer ayrılır. 5 * sizeof(int) ifadesi, 5 elemanın toplam bayt sayısını verir. Bu yaklaşım, kodu 32 bit ve 64 bit sistemlerde de çalıştırılabilir kılar.

Uygulama malloc ile int ayır ve yazdır

malloc ile bir int için heap belleği ayır; işaretçiyi int *p'ye ata. *p = 100 yap ve printf ile yazdır. <stdlib.h> başlığını ekle.

Başlangıç kodu

main.c
#include <stdio.h>

int main(void) {
    /* malloc ile bir int ayır; *p = 100; printf ile yazdır */
    return 0;
}

Örnek çözüm

main.c
#include <stdlib.h>
int *p = malloc(sizeof(int));
*p = 100;
printf("%d\n", *p);

Beklenen çıktı

100

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Boşluğu doldur: malloc çağrısı

Soru
int *p = ____(sizeof(int));
Cevap
int *p = malloc(sizeof(int));

Açıklama: malloc ile heap bellek ayrılır.

2 Çağrı ve amaç eşleştir

Kavram Anlamı
malloc(sizeof(int)) Bir int için yer
malloc(5 * sizeof(int)) 5 int için yer
sizeof(int) int'in baytı
void * Dönüş türü

3 malloc çağrısı ne döndürür?

  • Belleğin boyutunu
  • Bir int değeri
  • Ayrılan belleğin başlangıç adresini Doğru cevap
  • Bir işaretçi sayısını

Açıklama: malloc ayrılan belleğin başlangıç adresini döndürür.

Başlangıç bölümündeki tüm dersler