Perbedaan malloc() dan calloc() Bahasa C
Inisialisasi
malloc() mengalokasikan sebuah memori blok dari ukuran byte yang diberikan dan mengembalikan sebuah pointer ke bagian awal dari alokasi memori. Jika programmer mencoba untuk membaca nilai dari alokasi memori tanpa melakukan tahapan inisialisasi, maka akan didapatkan hasil tidak terdefinisi, yang biasanya berarti nilai yang dibaca akan menjadi bagian dari garbage.calloc() mengalokasikan memori dan juga melakukan inisialisasi untuk setiap byte dalam alokasi memori ke nilai 0. Jika ingin dilakukan pembacaan nilai dari alokasi memori tanpa perlu melakukan proses inisialisasi, maka akan didapatkan nilai 0 sebagai nilai yang telah diinisialikasikan sebelumnya oleh calloc().
Parameter
malloc() mengambil sebuah argumen tunggak, yang merupakan nilai dari byte untuk dialokasikan. Tidak seperti malloc(), dalam pemanggilannya calloc() membutuhkan dua buah argumen:- Angka dari blok yang harus dialokasikan.
- Ukuran untuk setiap blok dalam satuan byte.
Return Values
Setelah berhasil melakukan proses alokasi memori pada malloc() dan calloc(), maka sebuah pointer ke blok dari memori akan dikembalikan, jika tidak maka nilai NULL akan dikembalikan yang mengindikasikan nilai kesalahan.Contoh:
#include <stdio.h>
#include <stdlib.h>
int main()
{
// Kedua nilai mengalokasikan
// angka yang sama dalam
// satuan byte, yang merupakan
// nilai jumlah dari byte yang
// dibutuhkan untuk disimpan
// dalam nilai 5 int. Memori
// yang dialokasikan oleh
// calloc akan diinisialisasi
// ke zero, tetapi nilai
// memori yang dialokasikan
// dengan malloc tidak akan
// diinisialisasi sehingga
// proses pembacaan memorinya
// akan menghasilkan nilai
// tidak terdefinisi.
int* allocated_with_malloc =
malloc(5 * sizeof(int));
int* allocated_with_calloc =
calloc(5, sizeof(int));
// Seperti yang diperhatikan,
// semua nilai diinisialisasi
// ke nilai zero.
printf("Values of allocated_with_calloc: ");
for (size_t i = 0; i < 5; ++i)
{printf("%d ", allocated_with_calloc[i]);}
putchar('\n');
// Malloc memanggil 1 terabyte
// dari memori dinamis, yang
// tidak tersedia pada kondisi
// kali ini, dan akan
// mengakibatkan kegagalan
// proses dan mengembalikan
// nilai NULL.
int* failed_malloc = malloc(1000000000000);
if (failed_malloc == NULL)
{
printf("The allocation failed, "
"the value of failed_malloc is: %p",
(void*)failed_malloc);
}
// Catatan: selalu lakukan
// pembebasan memori dinamis
// ketika program telah
// selesai dijalankan.
free(allocated_with_malloc);
free(allocated_with_calloc);
}
The allocation failed, the value of failed_malloc is: (nil)
- EOF Bahasa C Menggunakan GETC dan FEOF Beserta Penjelasannya
- Fungsi FOPEN Bahasa C untuk File dalam Mode Penulisan
- Read dan Write Struktur File Bahasa C
- Fungsi FGETS dan GETS Bahasa C dan Penjelasannya
- File Handling Bahasa C dan Penjelasannya
- Fungsi FSETPOS Bahasa C dan Penjelasannya
- Fungsi Rename Bahasa C Beserta Penjelasannya
5 komentar untuk "Perbedaan malloc() dan calloc() Bahasa C"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -
Apa yang dimaksud dengan alokasi memori dinamis?
BalasHapusArtinya nilai memori tersebut bisa berubah-ubah ketika program sedang dijalankan.
HapusDimanis juga bisa dimaknai bahwa ukurannya pada program bersifat pleksibel atau dapat dibuat sesuai dengan kebutuhan dari program, jadi bisa lebih efisien kapasitas memori.
HapusApa fungsi malloc pada bahasa C?
BalasHapusFungsi malloc digunakan untuk alokasi memori dinamiss dan berguna ketika tidak diketahui jumlah memori yang dibutuhkan selama waktu kompilasi program, atau selama waktu program dijalankan.
Hapus