CodeBlanks Logo Icon CodeBlanks

Özet - Bellek ve stack

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

malloc, free ve realloc'u birleştirerek dinamik bir dizi yazarsın.

Özet - Bellek ve stack

Bu grupta C'nin bellek modelini öğrendin. Yerel değişkenler stack'te, malloc ile ayrılanlar heap'te yaşar. Otomatik depolama free gerektirmez; heap ise senin yönetimindedir.

int a = 10;                 /* stack */
int *p = malloc(sizeof(int)); /* heap */
int *z = calloc(3, sizeof(int));
free(p); free(z);            /* serbest bırak */

Her malloc/calloc için bir free olmalıdır; aksi halde bellek sızıntısı oluşur. realloc ile belleği büyütüp küçültebilirsin. Şimdi bu kavramları birleştiren bir ödev yapacaksın.

Uygulama malloc, kullan, free: kare hesabı

malloc ile bir int ayır; *p = 7 ata. (*p) * (*p) ile karesini hesapla; printf ile yazdır. free ile belleği bırak. <stdlib.h> başlığını ekle.

Başlangıç kodu

main.c
#include <stdio.h>

int main(void) {
    /* malloc ile int ayır; *p=7; karesini printf ile yazdır; free ile bırak */
    return 0;
}

Örnek çözüm

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

Beklenen çıktı

49

Soru ve cevaplar

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

1 Fonksiyon ve görev eşleştir

Kavram Anlamı
malloc Heap ayırır
calloc Sıfırlı ayırır
realloc Boyutlandırır
free Bırakır

2 Hangi bellek free ile serbest bırakılmalıdır?

  • Yerel değişken
  • malloc ile ayrılan bellek Doğru cevap
  • Statik değişken
  • Dizi elemanı

Açıklama: malloc/calloc ile ayrılan heap belleği free ile bırakılır.

3 Boşluğu doldur: malloc + sizeof

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

Açıklama: malloc(sizeof(int)) ile bir int için heap ayırılır.

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