Study
C

Dynamic Memory Allocation di C (malloc & free)

Penjelasan

Berbeda dari array biasa yang ukurannya harus ditentukan sejak awal dan tetap, C memungkinkan alokasi memori secara dinamis saat program berjalan lewat malloc() (memory allocate) dari header stdlib.h — berguna kalau ukuran data baru diketahui saat runtime. Memori yang dialokasikan dengan malloc() TIDAK dibersihkan otomatis (tidak ada garbage collector) — WAJIB dibebaskan manual dengan free() setelah tidak dipakai lagi, kalau tidak akan terjadi memory leak.

Contoh Konsep

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

int main() {
    int jumlah = 5;
    int *nilai = malloc(jumlah * sizeof(int)); // alokasi 5 slot int

    if (nilai == NULL) {
        printf("Alokasi memori gagal!\n");
        return 1;
    }

    for (int i = 0; i < jumlah; i++) {
        nilai[i] = i * 10;
    }

    printf("%d\n", nilai[2]); // 20

    free(nilai); // WAJIB, mencegah memory leak
    return 0;
}

Praktikum

Alokasikan array dinamis untuk 3 nilai integer dengan malloc(). Isi dengan angka 100, 200, 300, tampilkan totalnya lewat perulangan, lalu jangan lupa bebaskan memorinya dengan free().

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Selalu cek hasil malloc() terhadap NULL sebelum dipakai — alokasi bisa gagal (mis. memori habis), dan mengakses pointer NULL akan membuat program crash. Setelah free(), jangan pakai pointer itu lagi (set jadi NULL) supaya tidak jadi dangling pointer.