Perbezaan Antara calloc dan malloc

Perbezaan Utama - calloc vs malloc

Dalam pengaturcaraan, adalah perlu untuk menyimpan data. Data disimpan dalam memori. Lokasi memori ini dikenali sebagai pembolehubah. Setiap pemboleh ubah mempunyai jenis tertentu. Mereka boleh menjadi bilangan bulat, terapung, beregu, watak dan sebagainya. Terdapat juga struktur data yang boleh menyimpan kumpulan-kumpulan yang bersaiz tetap dari jenis yang sama. Ia adalah array. Pengaturcara perlu mengisytiharkan saiz array. Jika programmer mengisytiharkan pelbagai bilangan bulat untuk lima unsur, tidak mungkin untuk memberikan nilai kepada indeks yang lebih tinggi daripada saiz yang diisytiharkan. Peruntukan memori ditetapkan, dan ia tidak boleh diubah pada masa larian. Kaedah peruntukan memori lain adalah peruntukan memori dinamik. Peruntukan memori dinamik membantu untuk memperuntukkan lebih banyak memori apabila diperlukan dan dibebaskan apabila perlu. Fail header mempunyai empat fungsi untuk peruntukan memori dinamik. calloc dan malloc adalah dua fungsi sedemikian. The perbezaan utama antara calloc dan malloc adalah itu calloc mengalokasikan memori dan juga menginisialisasi blok memori yang diperuntukkan kepada sifar sedangkan malloc memperuntukkan memori tetapi tidak menginisialisasi memori yang diperuntukkan kepada sifar. Mengakses kandungan dalam calloc akan memberi sifar, tetapi malloc akan memberikan nilai sampah.

KANDUNGAN

1. Gambaran Keseluruhan dan Perbezaan Utama
2. Apa itu calloc
3. Apa itu malloc
4. Persamaan Antara calloc dan malloc
5. Side by Side Comparison - calloc vs malloc dalam Borang Tabular
6. Ringkasan

Apa itu calloc?

Peruntukan memori adalah proses memberikan memori untuk melaksanakan program. Kadang-kadang perlu mengubah saiz ingatan. Oleh itu, peruntukan memori dinamik digunakan. Ia dilakukan dengan menggunakan petunjuk. Penunjuk adalah pembolehubah rujukan yang memegang alamat pembolehubah lain.

Rajah 01: calloc dan malloc

calloc bermaksud "peruntukan bersebelahan". Ia memperuntukkan pelbagai blok ingatan dengan saiz yang sama. Sintaks untuk calloc adalah seperti berikut. Ia mengambil masa dua argumen. Mereka adalah bilangan blok dan saiz setiap blok. Fungsi calloc mengembalikan penunjuk void, jadi operator pemanggil digunakan untuk mengembalikan jenis penunjuk sesuai dengan jenis data yang diperlukan.

        void * calloc (size_t num, saiz size_t);

Rujuk program C di bawah ini mudah.

#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 bersambung yang boleh memegang 20 elemen diperuntukkan. Setiap akan mempunyai saiz integer. The sizeof (int) digunakan kerana jenis integer berbeza dari compiler hingga compiler.

Jika peruntukan memori berjaya, ia akan mengembalikan alamat asas blok memori. Ini bermakna ptr penunjuk sekarang menunjuk ke alamat asas blok memori itu. Semua kawasan diperuntukkan diasaskan kepada nol. Ia akan mencetak mesej Memesan Alokasi. Jika peruntukan memori tidak berjaya, ia akan mengembalikan penunjuk null. Oleh itu, ia akan mencetak Memori tidak diperuntukkan mesej.

Apa 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 * malloc (size_t_size);

Fungsi malloc mengembalikan penunjuk void, jadi pengendali pemula digunakan untuk mengembalikan jenis penunjuk sesuai dengan jenis data yang diperlukan.

Rujuk program C di bawah mudah 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 ingatan akan diperuntukkan. Penunjuk menunjuk ke alamat permulaan memori yang diperuntukkan. Penunjuk yang dikembalikan ditukarkan kepada jenis integer. Jika memori diperuntukkan, ia akan mencetak memori yang diperuntukkan mesej. Sekiranya memori tidak diperuntukkan, penunjuk null akan kembali. Oleh itu, memori tidak diperuntukkan mesej akan dicetak.

Apakah Kesamaan Antara calloc dan malloc?

  • Kedua-dua fungsi ini diisytiharkan dalam fail header. Ia adalah fail header perpustakaan standard.
  • Kedua-dua fungsi digunakan untuk peruntukan memori yang dinamik.
  • Penunjuk yang dikembalikan oleh calloc dan malloc harus dilemparkan ke dalam jenis tertentu.
  • Dalam peruntukan memori yang berjaya, kedua-dua fungsi akan mengembalikan penunjuk dengan alamat asas blok memori.
  • Jika peruntukan memori tidak berjaya, penunjuk batal akan dikembalikan.

Apakah Perbezaan Antara calloc dan malloc?

calloc vs malloc

calloc adalah fungsi untuk peruntukan memori dinamik dalam bahasa header stdlib.h bahasa C yang memperuntukkan bilangan bait tertentu dan menginisialisasinya menjadi sifar. malloc adalah fungsi untuk peruntukan memori dinamik dalam bahasa header stdlib.h bahasa C yang memperuntukkan bilangan bait tertentu.
 Makna
calloc bermaksud peruntukan bersebelahan. malloc bermaksud peruntukan ingatan.
Sintaks
calloc mengikuti sintaks yang sama dengan void * calloc (size_t_num, ukuran size_t); malloc mengikuti sintaks yang sama dengan void * malloc (size_t_size);.
 Bilangan Argumen
calloc mengambil dua hujah. Mereka adalah beberapa blok dan saiz setiap blok. malloc mengambil satu hujah. Ia adalah beberapa bait.
Kelajuan
calloc mengambil sedikit masa lebih lama daripada malloc. Ini adalah kerana langkah tambahan memulakan memori yang diperuntukkan dengan sifar. malloc lebih cepat daripada calloc.

Ringkasan - calloc vs malloc

Dalam peruntukan memori statik seperti kita menggunakan tatasusunan, ingatan tetap. Jika beberapa elemen disimpan, maka memori yang lain dibazirkan. Ia juga mungkin menyebabkan kesilapan 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 adalah calloc yang mengagihkan memori dan juga memulakan blok memori yang diperuntukkan kepada sifar sementara malloc memperuntukkan memori tetapi tidak memulakan blok ingatan menjadi sifar. Malloc mengambil dua argumen manakala calloc mengambil dua hujah.

Muat turun PDF calloc vs malloc

Anda boleh memuat turun versi PDF artikel ini dan menggunakannya untuk tujuan luar seperti peringatan kutipan. Sila muat turun versi PDF di sini: Perbezaan Antara calloc dan malloc

Rujukan:

1.Kumar, Krishan. "Perbezaan Antara Malloc dan Calloc di C." Cs-Fundamentals.com, Cs-Fundamentals.com. Terdapat di sini  
2. "Peruntukan memori dinamik." Wikipedia, Yayasan Wikimedia, 13 Januari 2018. Boleh didapati di sini 
3. "Calloc () berbanding malloc ()." GeeksforGeeks, 14 Jun 2017. Boleh didapati di sini