Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.
Memori dinamis C: malloc dan calloc
Alokasikan, ubah ukuran, dan bebaskan memori dengan pemeriksaan ukuran serta kesalahan.

malloc mengalokasikan blok dengan isi awal yang tidak ditentukan. calloc menyediakan ruang bagi elemen dan menolkan byte-nya. Jangan membaca memori malloc sebelum inisialisasi; byte nol bukan jaminan universal representasi nilai untuk semua tipe.
Periksa hasil dan hitung ukuran tanpa overflow. Saat memakai realloc, simpan pointer asli sampai keberhasilan dipastikan: jika gagal untuk ukuran positif, blok lama masih berlaku.
Bebaskan blok tepat sekali setelah selesai digunakan. Jangan mengaksesnya setelah free atau membebaskan memori otomatis maupun alamat di tengah blok. Program nyata juga harus menangani kegagalan alokasi.
Kode C
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
size_t count = 4;
int *scores = calloc(count, sizeof *scores);
if (scores == NULL) {
fputs("Allocation failed.\n", stderr);
return 1;
}
scores[2] = 9;
for (size_t i = 0; i < count; ++i) {
printf("%d%s", scores[i], i + 1 == count ? "\n" : " ");
}
free(scores);
return 0;
}Buka di kompilerPertanyaan umum
Mengapa kode dan keluarannya tetap dalam bahasa Inggris?
Kata kunci, pengenal, dan teks yang diperiksa tes dipertahankan agar program tidak berubah. Penjelasan dan kontrol telah diterjemahkan.