calloc()

Mengalokasikan memori secara dinamis dan mengisinya dengan nol dalam C

Fungsi calloc() digunakan untuk mengalokasikan blok memori secara dinamis, mirip dengan malloc(), tetapi secara otomatis menginisialisasi semua byte dengan nol (0).

Sintaks

void *calloc(size_t num, size_t size);
  • num âžœ Jumlah elemen yang ingin dialokasikan.

  • size âžœ Ukuran (dalam byte) dari setiap elemen.

  • Mengembalikan pointer ke blok memori yang dialokasikan.

  • Jika gagal, mengembalikan NULL.

Contoh Penggunaan

1. Mengalokasikan memori untuk array integer

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

int main() {
    int *arr;
    int n = 5;

    // Alokasi memori untuk array dengan 5 elemen, masing-masing sebesar sizeof(int)
    arr = (int*) calloc(n, sizeof(int));

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

    // Menampilkan isi array setelah calloc()
    printf("Isi array setelah calloc(): ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);  // Semua elemen bernilai 0
    }
    printf("\n");

    free(arr);  // Membebaskan memori
    return 0;
}

Hasilnya:

  • calloc(n, sizeof(int)) âžœ Mengalokasikan 5 x 4 byte = 20 byte untuk array integer.

  • Setiap elemen otomatis diisi dengan nol (0).

  • free(arr) âžœ Membebaskan memori setelah digunakan.

2. Mengalokasikan memori untuk string

Hasilnya:

  • calloc(20, sizeof(char)) âžœ Mengalokasikan 20 byte dan mengisinya dengan \0 (karakter kosong).

  • Sebelum diisi, string kosong karena calloc() menginisialisasi dengan nol (\0).

  • Setelah menyalin string, bisa digunakan seperti biasa.

Perbandingan calloc() vs malloc()

Fungsi
Deskripsi

malloc()

Mengalokasikan blok memori tanpa menginisialisasi isinya.

calloc()

Mengalokasikan memori dan mengisinya dengan nol (0).

Hasilnya:

  • malloc() bisa mengandung nilai acak, sedangkan calloc() selalu menginisialisasi memori dengan nol.

Last updated