Perbezaan Utama – calloc vs malloc
Dalam pengaturcaraan, adalah perlu untuk menyimpan data. Data disimpan dalam ingatan. Lokasi memori ini dikenali sebagai pembolehubah. Setiap pembolehubah mempunyai jenis tertentu. Ia boleh menjadi integer, terapung, beregu, aksara dan lain-lain. Terdapat juga struktur data yang boleh menyimpan koleksi berjujukan saiz tetap bagi unsur-unsur jenis yang sama. Ia adalah tatasusunan. Pengaturcara perlu mengisytiharkan saiz tatasusunan. Jika pengaturcara mengisytiharkan tatasusunan integer untuk lima elemen, adalah tidak mungkin untuk memberikan nilai kepada indeks yang lebih tinggi daripada saiz yang diisytiharkan. Peruntukan memori telah ditetapkan, dan ia tidak boleh diubah pada masa berjalan. Kaedah peruntukan memori lain ialah peruntukan memori dinamik. Peruntukan memori dinamik membantu memperuntukkan lebih banyak memori apabila diperlukan dan melepaskan apabila perlu. Fail pengepala mempunyai empat fungsi untuk peruntukan memori dinamik. calloc dan malloc adalah dua fungsi sedemikian. Perbezaan utama antara calloc dan malloc ialah calloc memperuntukkan memori dan juga memulakan blok memori yang diperuntukkan kepada sifar manakala malloc memperuntukkan memori tetapi tidak memulakan memori yang diperuntukkan itu kepada sifar. Mengakses kandungan dalam calloc akan memberikan sifar, tetapi malloc akan memberikan nilai sampah.
Apakah itu calloc?
Peruntukan memori ialah proses memperuntukkan memori untuk program yang melaksanakan. Kadang-kadang perlu menukar saiz memori. Oleh itu, peruntukan memori dinamik digunakan. Ia dilakukan menggunakan penunjuk. Penunjuk ialah pembolehubah rujukan yang memegang alamat pembolehubah lain.
Rajah 01: calloc dan malloc
calloc bermaksud “peruntukan bersebelahan”. Ia memperuntukkan berbilang blok memori dengan saiz yang sama. Sintaks untuk calloc adalah seperti berikut. Ia memerlukan dua hujah. Ia adalah bilangan blok dan saiz setiap blok. Calloc fungsi mengembalikan penunjuk kosong, jadi operator cast digunakan untuk mengembalikan jenis penunjuk mengikut jenis data yang diperlukan.
voidcalloc(nombor_saiz_t, saiz_t_saiz);
Rujuk atur cara C mudah di bawah.
termasuk
termasuk
int main(){
int ptr=(int) calloc(20, sizeof(int));
jika (ptr==NULL){
printf(“Memori tidak diperuntukkan”);
}
lain{
printf(“Memori diperuntukkan”);
}
kembali 0;
}
Mengikut program di atas, blok memori bersebelahan yang boleh memuatkan 20 elemen diperuntukkan. Setiap satu akan mempunyai saiz integer. Sizeof(int) digunakan kerana jenis integer berbeza dari pengkompil ke pengkompil.
Jika peruntukan memori berjaya, ia akan mengembalikan alamat asas blok memori. Ini bermakna bahawa penunjuk ptr kini menunjuk ke alamat asas blok memori itu. Semua kawasan yang diperuntukkan dimulakan kepada sifar. Ia akan mencetak mesej Memory Allocated. Jika peruntukan memori tidak berjaya, ia akan mengembalikan penunjuk nol. Oleh itu, ia akan mencetak Memori tidak diperuntukkan mesej.
Apakah itu malloc?
Fungsi malloc digunakan untuk memperuntukkan jumlah bait yang diperlukan dalam ingatan. Sintaks untuk malloc adalah seperti berikut. Saiz mewakili memori yang diperlukan dalam bait.
void mallok(saiz_t_saiz);
Fungsi malloc mengembalikan penunjuk kosong, jadi operator cast digunakan untuk mengembalikan jenis penunjuk mengikut jenis data yang diperlukan.
Rujuk program C mudah di bawah dengan fungsi malloc.
termasuk
termasuk
int main(){
int ptr=(int) malloc (10sizeof(int));
jika (ptr==NULL){
printf(“Memori tidak diperuntukkan”);
}
lain{
printf(“Memori diperuntukkan”);
}
kembali 0;
}
Mengikut program di atas, blok memori akan diperuntukkan. Penunjuk menunjuk ke alamat permulaan memori yang diperuntukkan. Penunjuk yang dikembalikan ditukar kepada jenis integer. Jika memori diperuntukkan ia akan mencetak memori diperuntukkan mesej. Jika memori tidak diperuntukkan, penunjuk nol akan kembali. Oleh itu, memori tidak diperuntukkan mesej akan dicetak.
Apakah Persamaan Antara calloc dan malloc?
- Kedua-dua fungsi ini diisytiharkan dalam fail pengepala. Ia ialah fail pengepala perpustakaan standard.
- Kedua-dua fungsi digunakan untuk peruntukan memori dinamik.
- Penunjuk yang dikembalikan oleh calloc dan malloc hendaklah dihantar ke jenis tertentu.
- Dalam peruntukan memori yang berjaya, kedua-dua fungsi akan mengembalikan penunjuk dengan alamat asas blok memori.
- Jika peruntukan memori tidak berjaya, penunjuk nol akan dikembalikan.
Apakah Perbezaan Antara calloc dan malloc?
calloc lwn malloc |
|
calloc ialah fungsi untuk peruntukan memori dinamik dalam fail pengepala stdlib.h bahasa C yang memperuntukkan bilangan bait tertentu dan memulakannya kepada sifar. | malloc ialah fungsi untuk peruntukan memori dinamik dalam fail pengepala stdlib.h bahasa C yang memperuntukkan bilangan bait tertentu. |
Maksud | |
caloc bermaksud peruntukan bersebelahan. | malloc bermaksud peruntukan memori. |
Sintaks | |
calloc mengikut sintaks yang serupa dengan void calloc(size_t_num, size_t size); | malloc mengikut sintaks yang serupa dengan void malloc(size_t_size);. |
Bilangan Hujah | |
calloc mengambil dua hujah. Ia adalah beberapa blok dan saiz setiap blok. | malloc mengambil satu hujah. Ia ialah beberapa bait. |
Kelajuan | |
calloc mengambil masa lebih lama daripada malloc. Itu adalah kerana langkah tambahan untuk memulakan memori yang diperuntukkan sebanyak sifar. | malloc lebih pantas daripada calloc. |
Ringkasan – calloc vs malloc
Dalam peruntukan memori statik seperti kita menggunakan tatasusunan, memori ditetapkan. Jika beberapa elemen disimpan, maka baki memori akan terbuang. Ia juga mungkin menyebabkan ralat apabila memori yang diperuntukkan adalah kecil daripada memori yang diperlukan. Oleh itu, peruntukan memori dinamik digunakan. Dalam bahasa C, calloc dan malloc menyediakan peruntukan memori dinamik. Perbezaan antara calloc dan malloc ialah calloc memperuntukkan memori dan juga memulakan blok memori yang diperuntukkan kepada sifar manakala malloc memperuntukkan memori tetapi tidak memulakan blok memori kepada sifar. Malloc mengambil dua hujah manakala calloc mengambil dua hujah.
Muat turun PDF calloc vs malloc
Anda boleh memuat turun versi PDF artikel ini dan menggunakannya untuk tujuan luar talian seperti dalam nota petikan. Sila muat turun versi PDF di sini: Perbezaan Antara calloc dan malloc