Perbezaan antara malloc dan baru
- 4241
- 1065
- Lionel Klocko
Malloc vs New
Salah satu soalan wawancara yang paling biasa dalam menyewa pengaturcara komputer adalah untuk pemohon/pengaturcara komputer untuk menjelaskan perbezaan antara malloc dan baru. Kedua -dua malloc dan baru wujud dalam bidang bahasa komputer dan sering digunakan oleh pengaturcara komputer untuk peruntukan memori dinamik.
Perbezaan asas antara keduanya ialah malloc wujud dalam bahasa C sementara baru adalah ciri khusus bahasa C ++. Malloc juga merupakan fungsi (yang, untuk pengaturcara, memerlukan sedikit masa untuk melaksanakan) sementara baru adalah program pengendali (yang memotong masa pelaksanaan). Ini adalah manfaat daripada pengendali yang baru kerana pengaturcara yang melakukan pengaturcaraan masa nyata mempunyai keperluan untuk memilih kaedah terpantas untuk digunakan.
Operator baru adalah jenis selamat tidak seperti fungsi malloc.
Fungsi malloc adalah fungsi perpustakaan untuk bahasa C. Yang dilakukannya adalah memperuntukkan memori dan mengembalikan penunjuk kepadanya. Sebaliknya, pengendali baru adalah pembinaan peringkat bahasa, dan tugasnya adalah untuk meneliti objek dengan memperuntukkan ingatan dan memanggil pembina yang sesuai. Satu lagi perbezaan fungsi malloc dari operator baru ialah malloc memerlukan penyisipan semasa pengisytiharan sementara bekas tidak. Juga, fungsi malloc menggunakan perkataan "percuma" untuk membersihkan memori sementara "padam" digunakan dalam pengendali baru untuk tujuan yang sama.
Kedua -duanya juga mempunyai cara yang berbeza dalam menangani kegagalan dan keletihan memori. Sekiranya fungsi malloc gagal, ia kembali dengan penunjuk nol. Pengendali baru tidak pernah mengembalikan penunjuk batal tetapi menunjukkan kegagalan dengan membuang pengecualian sebaliknya. Ini adalah kelebihan untuk pengendali baru kerana pengaturcara komputer tidak perlu menyemak penunjuk yang dikembalikan setiap kali ia memanggil baru atau pengaturcara komputer akan terlepas pengecualian sedemikian.
Fungsi malloc tidak membina objek (dipanggil pembina objek) tetapi pengendali baru tidak. Satu lagi kelebihan baru ialah pengendali boleh dibebankan sementara fungsi malloc tidak dapat. Pengendali Baru memerlukan bilangan objek tertentu untuk memperuntukkan sementara fungsi malloc memerlukan menentukan jumlah bait untuk diperuntukkan.
Memori juga boleh berukuran semula atau diagihkan semula dengan menggunakan fungsi malloc dengan menggunakan realloc. Walau bagaimanapun, pengendali baru tidak dapat melaksanakan fungsi ini dan menganggapnya sebagai salah satu kelemahan utama pengendali. Satu lagi kelebihan fungsi malloc ke atas pengendali baru ialah Malloc dapat memanjangkan jumlah memori dengan cepat. Ini masih menggunakan malloc dan realloc. Semasa melakukan situasi yang sama dalam bahasa C ++, pengaturcara harus mencipta ingatan baru dengan pengendali baru. Memori baru mesti mempunyai saiz yang diubahsuai dan akan disalin ke atas data dari penampan asal. Penampan asal mesti dipadam selepas salinannya. Ini boleh menjadi proses perlahan bagi pengaturcara.
Operator Baru mempunyai leverage over fungsi malloc dengan mengembalikan jenis data yang tepat manakala fungsi kembali tidak sah*. Fungsi malloc juga tidak dapat dibebankan berbanding dengan pengendali yang baru di mana beban adalah mungkin. Satu lagi ciri pengendali baru ialah terdapat kurang peluang untuk membuat kesilapan dengan pengendali berbanding fungsi malloc. Ini dianggap ditambah untuk pengaturcara terutama jika mereka menulis banyak kod atau mengusahakan kod pada jadual yang ketat. Fungsi malloc dan percuma boleh digunakan dalam c ++, tetapi tidak dapat digunakan secara langsung. Dinasihatkan untuk menggunakan baru dan padam.
Ringkasan:
1. Malloc adalah fungsi sementara baru adalah pengendali.
2. Baru adalah ciri khusus bahasa C ++ manakala Malloc digunakan dalam bahasa C.
3. Pengendali Baru berikut dengan "Padam" manakala fungsi Malloc pergi dengan "Percuma."
4. Fungsi malloc adalah fungsi perpustakaan untuk bahasa C manakala pengendali baru adalah pembinaan peringkat bahasa dari bahasa C ++.
- « Perbezaan antara halaman dan jawatan
- Perbezaan antara lengkung permintaan dan pergeseran permintaan »