malloc() vs calloc():Perbedaan Utama dijelaskan dengan Contoh
Sebelum mempelajari perbedaan antara malloc dan calloc mari kita pelajari-
Apa itu Alokasi Memori Dinamis?
Alokasi memori dinamis adalah proses pengalokasian memori pada saat dijalankan. Ada empat rutin perpustakaan, calloc(), free(), realloc(), dan malloc() yang dapat digunakan untuk mengalokasikan memori dan membebaskannya selama eksekusi program. Rutinitas ini didefinisikan dalam file header yang disebut stdlib.h.
Apa itu malloc() ?
Ini adalah fungsi yang digunakan untuk mengalokasikan blok memori secara dinamis. Ini mencadangkan ruang memori dengan ukuran tertentu dan mengembalikan pointer nol yang menunjuk ke lokasi memori.
Pointer yang dikembalikan biasanya bertipe void. Ini berarti bahwa kita dapat menetapkan fungsi malloc ke sembarang pointer. Bentuk lengkap malloc adalah alokasi memori.
Dalam tutorial ini, Anda akan mempelajari:
Apa itu Alokasi Memori Dinamis?
Apa itu malloc() ?
Apa itu calloc() ?
Mengapa menggunakan malloc() ?
Mengapa menggunakan calloc() ?
Sintaks malloc()
Sintaks dari calloc()
Contoh malloc() di C
Contoh calloc() dalam C
Perbedaan Antara calloc() dan malloc()
Apa itu calloc() ?
Fungsi Calloc() digunakan untuk mengalokasikan beberapa blok memori. Ini adalah fungsi alokasi memori dinamis yang digunakan untuk mengalokasikan memori ke struktur data yang kompleks seperti array dan struktur. Jika fungsi ini gagal mengalokasikan cukup ruang seperti yang ditentukan, ia mengembalikan pointer nol. Bentuk lengkap dari fungsi calloc adalah alokasi yang berdekatan.
Mengapa menggunakan malloc() ?
Berikut adalah alasan menggunakan malloc()
Anda harus menggunakan malloc() ketika Anda harus mengalokasikan memori saat runtime.
Anda harus menggunakan malloc ketika Anda harus mengalokasikan objek yang harus ada di luar eksekusi blok memori saat ini.
Pilih malloc() jika Anda perlu mengalokasikan memori lebih besar dari ukuran tumpukan itu.
Ini mengembalikan pointer ke byte pertama dari ruang yang dialokasikan.
Ini memungkinkan pengembang untuk mengalokasikan memori sesuai kebutuhan dalam jumlah yang tepat.
Fungsi ini mengalokasikan ukuran blok memori byte dari heap.
Mengapa menggunakan calloc() ?
Berikut adalah alasan menggunakan calloc()
Saat Anda harus menyetel memori yang dialokasikan ke nol.
Anda dapat menggunakan calloc yang mengembalikan pointer untuk mendapatkan akses ke tumpukan memori.
Digunakan saat Anda perlu menginisialisasi elemen ke nol untuk mengembalikan pointer ke memori.
Untuk mencegah overflow yang dimungkinkan dengan malloc()
Gunakan calloc() untuk meminta halaman yang diketahui telah di-nolkan.
Sintaks malloc()
Berikut adalah Sintaks malloc()
ptr = (cast_type *) malloc (byte_size);
Dalam sintaks di atas, ptr adalah pointer dari cast_type. Fungsi malloc mengembalikan pointer ke memori yang dialokasikan dari byte_size.
Example: ptr = (int *) malloc (50)
Ketika pernyataan ini berhasil dieksekusi, ruang memori sebesar 50 byte dicadangkan. Alamat byte pertama dari ruang yang dicadangkan diberikan ke pointer “ptr” bertipe int.
Sintaks calloc()
Berikut adalah Sintaks malloc()
ptr = (cast_type *) calloc (n, size);
Sintaks di atas digunakan untuk mengalokasikan n blok memori dengan ukuran yang sama. Setelah ruang memori dialokasikan, semua byte diinisialisasi ke nol. Pointer, yang saat ini berada pada byte pertama dari ruang memori yang dialokasikan, dikembalikan.
Contoh malloc() di C
Dalam kode di bawah ini, sizeof(*ptr) digunakan untuk mengalokasikan blok memori dari 15 bilangan bulat. Dalam pernyataan printf, kami menemukan nilai bilangan bulat ke-6.
#include<stdlib.h>
#include<stdio.h>
int main(){
int *ptr;
ptr = malloc(15 * sizeof(*ptr));
if (ptr != NULL) {
*(ptr + 5) = 480;
printf("Value of the 6th integer is %d",*(ptr + 5));
}
}
Keluaran:
Nilai bilangan bulat ke-6 adalah 480
Contoh calloc() di C
Program bahasa C di bawah ini menghitung jumlah sepuluh suku pertama. Jika nilai pointer jika null, maka ruang memori tidak akan dialokasikan.
Untuk loop digunakan untuk mengulang nilai variabel “i” dan mencetak jumlah. Terakhir, function free digunakan untuk membebaskan pointer.
#include <stdio.h>
#include <stdlib.h>
int main() {
int i, * ptr, sum = 0;
ptr = calloc(10, sizeof(int));
if (ptr == NULL) {
printf("Error! memory not allocated.");
exit(0);
}
printf("Building and calculating the sequence sum of the first 10 terms \n");
for (i = 0; i < 10; ++i) { * (ptr + i) = i;
sum += * (ptr + i);
}
printf("Sum = %d", sum);
free(ptr);
return 0;
}
Keluaran:
Membangun dan menghitung jumlah barisan 10 suku pertama n Jumlah =45
Perbedaan Antara calloc() dan malloc()
Berikut adalah perbedaan penting antara malloc() dan calloc():
malloc()panggilan() Fungsi Malloc() akan membuat satu blok memori dengan ukuran yang ditentukan oleh pengguna.Fungsi Calloc() dapat menetapkan beberapa blok memori untuk suatu variabel.Fungsi Malloc berisi nilai sampah.Blok memori yang dialokasikan oleh fungsi calloc selalu diinisialisasi ke nol.Jumlah argumen adalah 1.Jumlah argumen 2.Calloc lebih lambat dari malloc.Malloc lebih cepat dari calloc.Ini tidak aman dibandingkan dengan calloc.Ini aman untuk digunakan dibandingkan dengan malloc.Efisiensi waktu lebih tinggi dari calloc (.Efisiensi waktu lebih rendah dari malloc().Malloc() fungsi hanya mengembalikan alamat awal dan tidak membuatnya nol.Sebelum mengalokasikan alamat, fungsi Calloc() mengembalikan alamat awal dan menjadikannya nol.Itu tidak melakukan inisialisasi memori. Ini melakukan inisialisasi memori.
PERBEDAAN UTAMA:
fungsi malloc() hanya mengembalikan alamat awal dan tidak menjadikannya nol di sisi lain, fungsi calloc() mengembalikan alamat awal dan menjadikannya nol.
Dalam fungsi malloc, jumlah argumen adalah 1 sedangkan pada fungsi calloc, jumlah argumen adalah 2.
efisiensi waktu malloc() lebih tinggi dari calloc() sedangkan malloc() tidak aman dibandingkan dengan calloc()
malloc tidak menginisialisasi memori sedangkan calloc melakukan inisialisasi memori.