Ö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
#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
#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
int *p = ____(sizeof(int));
int *p = malloc(sizeof(int));
Açıklama: malloc(sizeof(int)) ile bir int için heap ayırılır.