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().
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.