Perbedaan Kunci – calloc vs malloc
Dalam pemrograman, perlu untuk menyimpan data. Data disimpan dalam memori. Lokasi memori ini dikenal sebagai variabel. Setiap variabel memiliki tipe tertentu. Mereka dapat berupa bilangan bulat, float, double, karakter, dll. Ada juga struktur data yang dapat menyimpan kumpulan elemen berurutan dengan ukuran tetap dari jenis yang sama. Ini adalah sebuah array. Programmer harus mendeklarasikan ukuran array. Jika programmer mendeklarasikan array bilangan bulat untuk lima elemen, tidak mungkin untuk menetapkan nilai ke indeks yang lebih tinggi dari ukuran yang dideklarasikan. Alokasi memori tetap, dan tidak dapat diubah saat dijalankan. Metode alokasi memori lainnya adalah alokasi memori dinamis. Alokasi memori dinamis membantu mengalokasikan lebih banyak memori saat diperlukan dan melepaskan saat diperlukan. File header memiliki empat fungsi untuk alokasi memori dinamis. calloc dan malloc adalah dua fungsi tersebut. Perbedaan utama antara calloc dan malloc adalah bahwa 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.
Apa itu calloc?
Alokasi memori adalah proses pemberian memori untuk program yang dijalankan. Terkadang perlu untuk mengubah ukuran memori. Oleh karena itu, alokasi memori dinamis digunakan. Itu dilakukan dengan menggunakan pointer. Pointer adalah variabel referensi yang menyimpan alamat variabel lain.
Gambar 01: calloc dan malloc
calloc adalah singkatan dari "alokasi berkelanjutan". Ini 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 kosong, jadi operator cast digunakan untuk mengembalikan tipe pointer sesuai dengan tipe data yang dibutuhkan.
voidcalloc(jumlah_ukuran, ukuran_t);
Lihat program C sederhana di bawah ini.
sertakan
sertakan
int main(){
int ptr=(int) calloc(20, sizeof(int));
if (ptr==NULL){
printf("Memori tidak dialokasikan");
}
lain{
printf("Memori dialokasikan");
}
kembali 0;
}
Menurut program di atas, blok memori yang berdekatan yang dapat menampung 20 elemen dialokasikan. Masing-masing akan memiliki ukuran bilangan bulat. Sizeof(int) digunakan karena tipe integer bervariasi dari compiler ke compiler.
Jika alokasi memori berhasil, alamat dasar blok memori akan dikembalikan. Ini berarti bahwa pointer ptr sekarang menunjuk ke alamat dasar dari blok memori itu. Semua wilayah yang dialokasikan diinisialisasi ke nol. Ini akan mencetak pesan Memory Allocated. Jika alokasi memori tidak berhasil, itu akan mengembalikan pointer nol. Oleh karena itu, ia akan mencetak pesan Memori tidak dialokasikan.
Apa itu malloc?
Fungsi malloc digunakan untuk mengalokasikan jumlah byte yang diperlukan dalam memori. Sintaks untuk malloc adalah sebagai berikut. Ukuran mewakili memori yang dibutuhkan dalam byte.
void malloc(size_t_size);
Fungsi malloc mengembalikan pointer kosong, jadi operator cast digunakan untuk mengembalikan tipe pointer sesuai dengan tipe data yang dibutuhkan.
Lihat program C sederhana di bawah ini dengan fungsi malloc.
sertakan
sertakan
int main(){
int ptr=(int) malloc (10sizeof(int));
if (ptr==NULL){
printf("Memori tidak dialokasikan");
}
lain{
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 diubah menjadi tipe integer. Jika memori dialokasikan itu akan mencetak pesan memori dialokasikan. Jika memori tidak dialokasikan, pointer nol akan kembali. Oleh karena itu, memori tidak dialokasikan pesan akan dicetak.
Apa Persamaan Calloc dan malloc?
- Kedua fungsi ini dideklarasikan dalam file header. Ini adalah file header perpustakaan standar.
- Kedua fungsi digunakan untuk alokasi memori dinamis.
- Penunjuk yang dikembalikan oleh calloc dan malloc harus dimasukkan ke dalam tipe tertentu.
- Dalam alokasi memori yang berhasil, kedua fungsi akan mengembalikan pointer dengan alamat dasar blok memori.
- Jika alokasi memori tidak berhasil, pointer null akan dikembalikan.
Apa Perbedaan Calloc dan malloc?
calloc vs malloc |
|
calloc adalah fungsi untuk alokasi memori dinamis dalam file header stdlib.h bahasa C yang mengalokasikan sejumlah byte tertentu dan menginisialisasinya ke nol. | malloc adalah fungsi untuk alokasi memori dinamis dalam file header stdlib.h bahasa C yang mengalokasikan sejumlah byte tertentu. |
Arti | |
calloc adalah singkatan dari contiguous alokasi. | malloc adalah singkatan dari alokasi memori. |
Sintaks | |
calloc mengikuti sintaks yang mirip dengan void calloc(size_t_num, size_t size); | malloc mengikuti sintaks yang mirip dengan void malloc(size_t_size);. |
Jumlah Argumen | |
calloc membutuhkan dua argumen. Mereka adalah sejumlah blok dan ukuran setiap blok. | malloc membutuhkan satu argumen. Ini adalah sejumlah byte. |
Kecepatan | |
calloc membutuhkan waktu sedikit lebih lama dari malloc. Itu karena langkah ekstra menginisialisasi memori yang dialokasikan dengan nol. | malloc lebih cepat dari calloc. |
Ringkasan – calloc vs malloc
Dalam alokasi memori statis seperti kita menggunakan array, memori tetap. Jika beberapa elemen disimpan, maka sisa memori akan terbuang sia-sia. Mungkin juga menyebabkan kesalahan ketika memori yang dialokasikan lebih kecil dari memori yang dibutuhkan. Oleh karena itu, alokasi memori dinamis digunakan. Dalam bahasa C, calloc dan malloc menyediakan 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.
Unduh PDF calloc vs malloc
Anda dapat mengunduh versi PDF artikel ini dan menggunakannya untuk tujuan offline sesuai catatan kutipan. Silakan unduh versi PDF di sini: Perbedaan Antara calloc dan malloc