Dalam pemrograman, perlu menyimpan data. Data disimpan dalam memori. Lokasi memori ini dikenal sebagai variabel. Setiap variabel memiliki jenis tertentu. Mereka bisa menjadi bilangan bulat, pelampung, ganda, karakter dll. Ada juga struktur data yang dapat menyimpan kumpulan elemen berurutan ukuran tetap dari jenis yang sama. Itu adalah array. Programmer harus menyatakan ukuran array. Jika programmer menyatakan array bilangan bulat untuk lima elemen, tidak mungkin untuk menetapkan nilai ke indeks yang lebih tinggi dari ukuran yang dinyatakan. Alokasi memori diperbaiki, dan tidak dapat diubah pada waktu berjalan. Metode alokasi memori lainnya adalah alokasi memori dinamis. Alokasi memori dinamis membantu mengalokasikan lebih banyak memori saat diperlukan dan melepaskan bila perlu. File header memiliki empat fungsi untuk alokasi memori dinamis. calloc dan malloc adalah dua fungsi seperti itu. Itu perbedaan utama antara calloc dan malloc adalah itu Calloc mengalokasikan memori dan juga menginisialisasi blok memori yang dialokasikan ke nol sedangkan malloc mengalokasikan memori tetapi tidak menginisialisasi memori yang dialokasikan ke nol. Mengakses konten di calloc akan memberikan nol, tetapi malloc akan memberikan nilai sampah.
1. Ikhtisar dan Perbedaan Utama
2. Apa itu calloc
3. Apa itu malloc
4. Kesamaan antara calloc dan malloc
5. Perbandingan berdampingan - calloc vs malloc dalam bentuk tabel
6. Ringkasan
Alokasi memori adalah proses menetapkan memori untuk program pelaksanaan. Terkadang perlu mengubah ukuran memori. Oleh karena itu, alokasi memori dinamis digunakan. Itu dilakukan dengan menggunakan pointer. Pointer adalah variabel referensi yang menahan alamat variabel lain.
Gambar 01: calloc dan malloc
Calloc berarti "alokasi yang berdekatan". Itu mengalokasikan beberapa blok memori dengan ukuran yang sama. Sintaks untuk calloc adalah sebagai berikut. Dibutuhkan dua argumen. Mereka adalah jumlah blok dan ukuran setiap blok. Fungsi calloc mengembalikan pointer void, jadi operator cast digunakan untuk mengembalikan tipe pointer sesuai dengan tipe data yang diperlukan.
void * calloc (size_t num, size_t size);
Rujuk program C sederhana di bawah ini.
#termasuk
#termasuk
int main ()
int ptr * = (int *) calloc (20, sizeof (int));
if (ptr == null)
printf ("Memori tidak dialokasikan");
kalau tidak
printf ("Memori dialokasikan");
kembali 0;
Menurut program di atas, blok memori yang berdekatan yang dapat menahan 20 elemen dialokasikan. Masing -masing akan memiliki ukuran bilangan bulat. Sizeof (int) digunakan karena tipe integer bervariasi dari kompiler ke kompiler.
Jika alokasi memori berhasil, itu akan mengembalikan alamat dasar blok memori. Itu berarti bahwa pointer ptr sekarang menunjuk ke alamat dasar blok memori itu. Semua daerah yang dialokasikan diinisialisasi ke nol. Itu akan mencetak pesan yang dialokasikan memori. Jika alokasi memori tidak berhasil, itu akan mengembalikan pointer nol. Oleh karena itu, akan mencetak memori tidak dialokasikan.
Fungsi malloc digunakan untuk mengalokasikan jumlah byte yang diperlukan dalam memori. Sintaks untuk malloc adalah sebagai berikut. Ukurannya mewakili memori yang diperlukan dalam byte.
void *malloc (size_t_size);
Fungsi malloc mengembalikan pointer void, jadi operator cor digunakan untuk mengembalikan tipe pointer sesuai dengan tipe data yang diperlukan.
Rujuk program C sederhana di bawah ini dengan fungsi malloc.
#termasuk
#termasuk
int main ()
int ptr * = (int *) malloc (10 * sizeof (int));
if (ptr == null)
printf ("Memori tidak dialokasikan");
kalau tidak
printf ("Memori dialokasikan");
kembali 0;
Menurut program di atas, blok memori akan dialokasikan. Pointer menunjuk ke alamat awal dari memori yang dialokasikan. Pointer yang dikembalikan dikonversi ke jenis integer. Jika memori dialokasikan, itu akan mencetak memori adalah pesan yang dialokasikan. Jika memori tidak dialokasikan, penunjuk nol akan kembali. Oleh karena itu, memori tidak dialokasikan pesan akan dicetak.
Calloc vs Malloc | |
calloc adalah fungsi untuk alokasi memori dinamis dalam bahasa C stdlib.file header h yang mengalokasikan sejumlah byte tertentu dan menginisialisasi mereka ke nol. | Malloc adalah fungsi untuk alokasi memori dinamis dalam bahasa C stdlib.file header h yang mengalokasikan sejumlah byte tertentu. |
Arti | |
calloc singkatan dari alokasi yang berdekatan. | Malloc singkatan dari alokasi memori. |
Sintaksis | |
calloc mengikuti sintaksis yang mirip dengan void *calloc (size_t_num, size_t size); | Malloc mengikuti sintaksis yang mirip dengan void *malloc (size_t_size);. |
Jumlah argumen | |
calloc mengambil dua argumen. Mereka adalah sejumlah blok dan ukuran setiap blok. | Malloc mengambil satu argumen. Itu adalah sejumlah byte. |
Kecepatan | |
calloc membutuhkan waktu lebih lama dari malloc. Itu karena langkah ekstra untuk menginisialisasi memori yang dialokasikan secara nol. | malloc lebih cepat dari calloc. |
Dalam alokasi memori statis seperti itu kami menggunakan array, memori diperbaiki. Jika beberapa elemen disimpan, maka sisa ingatannya terbuang sia -sia. Ini juga dapat menyebabkan kesalahan ketika memori yang dialokasikan kecil dari memori yang dibutuhkan. Oleh karena itu, alokasi memori dinamis digunakan. Dalam bahasa C, calloc dan malloc memberikan alokasi memori dinamis. Perbedaan antara calloc dan malloc adalah bahwa calloc mengalokasikan memori dan juga menginisialisasi blok memori yang dialokasikan ke nol sementara malloc mengalokasikan memori tetapi tidak menginisialisasi blok memori ke nol. Malloc mengambil dua argumen sementara Calloc mengambil dua argumen.
Anda dapat mengunduh versi PDF dari artikel ini dan menggunakannya untuk tujuan offline sesuai catatan kutipan. Silakan unduh versi PDF di sini: Perbedaan Antara Calloc dan Malloc
1.Kumar, Krishan. “Perbedaan antara malloc dan calloc di c.”CS-Fundamentals.com, cs-fundaments.com. Tersedia disini
2.“C Alokasi Memori Dinamis.”Wikipedia, Wikimedia Foundation, 13 Jan. 2018. Tersedia disini
3.“Calloc () versus malloc ().”GeeksForgeeks, 14 Juni 2017. Tersedia disini