Dalam pengaturcaraan, perlu menyimpan data. Data disimpan dalam ingatan. Lokasi memori ini dikenali sebagai pembolehubah. Setiap pemboleh ubah mempunyai jenis tertentu. Mereka boleh menjadi bilangan bulat, terapung, beregu, watak dll. Terdapat juga struktur data yang dapat menyimpan koleksi unsur-unsur yang sama dengan saiz yang sama. Ia adalah pelbagai. Pengaturcara harus mengisytiharkan saiz array. Sekiranya pengaturcara mengisytiharkan pelbagai bilangan bulat untuk lima elemen, tidak mungkin untuk memberikan nilai kepada indeks yang lebih tinggi daripada saiz yang diisytiharkan. Peruntukan memori ditetapkan, dan ia tidak dapat diubah pada waktu larian. Kaedah peruntukan memori lain adalah 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. The Perbezaan utama antara calloc dan malloc adalah bahawa Calloc memperuntukkan memori dan juga memulakan blok memori yang diperuntukkan kepada sifar sedangkan malloc memperuntukkan memori tetapi tidak memulakan memori yang diperuntukkan kepada sifar. Mengakses kandungan di Calloc akan memberi sifar, tetapi malloc akan memberikan nilai sampah.
1. Gambaran Keseluruhan dan Perbezaan Utama
2. Apa itu Calloc
3. Apa itu Malloc
4. Persamaan antara Calloc dan Malloc
5. Perbandingan sampingan - Calloc vs malloc dalam bentuk jadual
6. Ringkasan
Peruntukan Memori adalah proses menetapkan memori untuk program pelaksanaan. Kadang -kadang perlu mengubah saiz memori. Oleh itu, peruntukan memori dinamik digunakan. Ia dilakukan dengan menggunakan petunjuk. Petunjuk adalah pembolehubah rujukan yang memegang alamat pemboleh ubah lain.
Rajah 01: Calloc dan Malloc
Calloc bermaksud "peruntukan bersebelahan". Ia memperuntukkan pelbagai blok memori dengan saiz yang sama. Sintaks untuk Calloc adalah seperti berikut. Memerlukan dua hujah. Mereka adalah bilangan blok dan saiz setiap blok. Fungsi Calloc mengembalikan penunjuk tidak sah, jadi pengendali pelakon digunakan untuk mengembalikan jenis penunjuk mengikut jenis data yang diperlukan.
void * calloc (size_t num, size_t size);
Rujuk program C Mudah di bawah.
#include
#include
int main ()
int ptr * = (int *) calloc (20, sizeof (int));
jika (ptr == null)
printf ("Memori tidak diperuntukkan");
lain
printf ("Memori diperuntukkan");
kembali 0;
Menurut program di atas, blok memori yang bersebelahan yang dapat memegang 20 elemen diperuntukkan. Masing -masing akan mempunyai saiz integer. Sizeof (int) digunakan kerana jenis integer berbeza dari pengkompil kepada pengkompil.
Sekiranya peruntukan memori berjaya, ia akan mengembalikan alamat asas blok memori. Ini bermaksud bahawa penunjuk PTR kini menunjuk ke alamat asas blok memori itu. Semua kawasan yang diperuntukkan diasaskan ke sifar. Ia akan mencetak mesej yang diperuntukkan memori. Sekiranya peruntukan memori tidak berjaya, ia akan mengembalikan penunjuk nol. Oleh itu, ia akan mencetak memori tidak diperuntukkan mesej.
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 *malloc (size_t_size);
Fungsi malloc mengembalikan penunjuk tidak sah, jadi pengendali pelakon digunakan untuk mengembalikan jenis penunjuk mengikut jenis data yang diperlukan.
Rujuk program C Mudah di bawah dengan fungsi malloc.
#include
#include
int main ()
int ptr * = (int *) malloc (10 * sizeof (int));
jika (ptr == null)
printf ("Memori tidak diperuntukkan");
lain
printf ("Memori diperuntukkan");
kembali 0;
Menurut program di atas, blok memori akan diperuntukkan. Penunjuk menunjuk ke alamat permulaan memori yang diperuntukkan. Penunjuk yang dikembalikan ditukar kepada jenis integer. Sekiranya memori diperuntukkan, ia akan mencetak memori diperuntukkan mesej. Sekiranya memori tidak diperuntukkan, penunjuk null akan kembali. Oleh itu, ingatan tidak diperuntukkan mesej akan dicetak.
Calloc vs Malloc | |
Calloc adalah fungsi untuk peruntukan memori dinamik dalam stdlib bahasa c.H fail header yang memperuntukkan bilangan bait tertentu dan memulakannya menjadi sifar. | Malloc adalah fungsi untuk peruntukan memori dinamik dalam stdlib bahasa c.H fail header yang memperuntukkan bilangan bait tertentu. |
Makna | |
Calloc bermaksud peruntukan bersebelahan. | malloc bermaksud peruntukan ingatan. |
Sintaks | |
Calloc mengikuti sintaks yang serupa dengan void *calloc (size_t_num, size_t size); | malloc mengikuti sintaks yang serupa dengan void *malloc (size_t_size);. |
Bilangan hujah | |
Calloc mengambil dua hujah. Mereka adalah sebilangan blok dan saiz setiap blok. | Malloc mengambil satu hujah. Ia adalah sebilangan bait. |
Kelajuan | |
Calloc mengambil masa lebih lama daripada malloc. Itu kerana langkah tambahan memulakan memori yang diperuntukkan dengan sifar. | Malloc lebih cepat daripada Calloc. |
Dalam peruntukan memori statik seperti kami menggunakan tatasusunan, memori ditetapkan. Sekiranya beberapa elemen disimpan, maka ingatan selebihnya dibazirkan. Ia juga mungkin menyebabkan kesilapan apabila memori yang diperuntukkan 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 menjadi sifar. Malloc mengambil dua hujah sementara Calloc mengambil dua hujah.
Anda boleh memuat turun versi PDF artikel ini dan menggunakannya untuk tujuan luar talian mengikut nota petikan. Sila muat turun versi PDF di sini: Perbezaan antara Calloc dan Malloc
1.Kumar, Krishan. "Perbezaan antara Malloc dan Calloc di C."CS-Fundamentals.com, cs-fundamentals.com. Terdapat di sini
2."C Peruntukan Memori Dinamik."Wikipedia, Yayasan Wikimedia, 13 Jan. 2018. Terdapat di sini
3."Calloc () berbanding malloc ()."Geeksforgeeks, 14 Jun 2017. Terdapat di sini