Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

malloc vs calloc: Perbedaan Kunci Disertai Contoh Praktis

Apa Itu Alokasi Memori Dinamis?

Alokasi memori dinamis memungkinkan program meminta dan melepaskan memori saat runtime. Dalam C, pustaka standar menyediakan empat fungsi utama untuk tujuan ini – malloc(), calloc(), realloc(), dan free() – semuanya dideklarasikan dalam stdlib.h.

malloc(): Alokasi Satu Blok Memori

malloc() (singkatan dari "memory allocation") menyediakan blok byte yang bersebelahan dan mengembalikan pointer ke byte pertama. Isi blok yang baru dialokasikan tidak terdefinisi, berarti berisi bits apa pun yang berada di lokasi memori tersebut.

Penggunaan umum:

int *p = (int *)malloc(n * sizeof(int));
Jika permintaan gagal, malloc() mengembalikan NULL.

calloc(): Alokasi Beberapa Blok yang Diinisialisasi Nol

calloc() (singkatan dari "contiguous allocation") menerima dua argumen: jumlah elemen dan ukuran setiap elemen. Ini mengalokasikan memori untuk semua elemen dan secara otomatis mengatur setiap byte ke nol, membuatnya ideal untuk array atau struktur yang memerlukan keadaan awal yang bersih.

Penggunaan umum:

int *p = (int *)calloc(n, sizeof(int));
Seperti malloc(), ini mengembalikan NULL jika alokasi gagal.

Kapan Menggunakan Setiap Fungsi

Ringkasan Sintaks

malloc()

void *malloc(size_t size);

calloc()

void *calloc(size_t num, size_t size);

Contoh Kode Praktis

Contoh 1: Menggunakan malloc() untuk Menyimpan 15 Integer

#include <stdlib.h> #include <stdio.h> int main(void) { int *ptr = malloc(15 * sizeof(*ptr)); if (!ptr) { perror("malloc failed"); return EXIT_FAILURE; } ptr[5] = 480; // elemen ke-6 (indeks berbasis 0) printf("Nilai integer ke-6 adalah %d\n", ptr[5]); free(ptr); return EXIT_SUCCESS; } 

Output: Nilai integer ke-6 adalah 480

Contoh 2: Menggunakan calloc() untuk Menghitung Jumlah

#include <stdlib.h> #include <stdio.h> int main(void) { int *ptr = calloc(10, sizeof(int)); if (!ptr) { perror("calloc failed"); return EXIT_FAILURE; } int sum = 0; for (int i = 0; i < 10; ++i) { ptr[i] = i; // inisialisasi redundan tetapi ditunjukkan untuk kejelasan sum += ptr[i]; } printf("Jumlah = %d\n", sum); free(ptr); return EXIT_SUCCESS; } 

Output: Jumlah = 45

Perbandingan Berdampingan

malloc vs calloc: Perbedaan Kunci Disertai Contoh Praktis

Fiturmalloc()calloc()
Jumlah parameter1 (ukuran)2 (jumlah, ukuran)
Kondisi memori setelah alokasiTidak diinisialisasi (sampah)Diinisialisasi nol
Kasus penggunaan umumSatu blok, inisialisasi manualArray atau struktur yang membutuhkan awal bersih
PerformaLebih cepat (tanpa pengosongan)Lebih lambat (overhead pengosongan)
KeamananRisiko lebih tinggi menggunakan nilai sampahRisiko lebih rendah karena pengosongan otomatis
Nilai kembali jika gagalNULLNULL
Header standarstdlib.hstdlib.h

Kesimpulan

Bahasa C

  1. Ekspresi, Pernyataan, dan Blok C#: Panduan Komprehensif dengan Contoh Praktis
  2. Perulangan do-while C++: Sintaks, Contoh Praktis, dan Perulangan Bersarang
  3. Menguasai Pointer C++: Konsep, Contoh, dan Aplikasi Praktis
  4. Menguasai Tipe Data Char C++: Deklarasi, ASCII, dan Teknik Konversi
  5. Pengoverloadan Operator C++ – Panduan Praktis dengan Contoh Kode
  6. Fungsi C++ Dijelaskan dengan Contoh Kode Praktis
  7. Menguasai Koleksi C#: Tutorial Praktis dengan Contoh Dunia Nyata
  8. While vs. Do-While Loop: Perbandingan Jelas dengan Contoh Praktis
  9. calloc() dalam C: Alokasi Memori Diinisialisasi Nol dan Contoh Praktis
  10. Menguasai str.count() Python: Cara Menghitung Karakter & Substring dengan Contoh