Perbezaan Antara Malloc dan New Perbezaan Antara

Anonim

Malloc vs New

One daripada soalan temu bual yang paling biasa dalam menyewa seorang 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 yang dinamik.

Perbezaan asas antara kedua ialah malloc wujud dalam bahasa C sementara baru adalah ciri khusus dalam bahasa C ++. Malloc juga berfungsi (yang, untuk programmer, memerlukan sedikit masa untuk dilaksanakan) sementara baru adalah program pengendali (yang memotong masa pelaksanaan). Ini adalah manfaat dari pengendali yang baru kerana pengaturcara melakukan pengaturcaraan masa sebenar mempunyai keperluan untuk memilih kaedah terpantas untuk digunakan.

Pengendali yang baru adalah jenis-selamat tidak seperti fungsi malloc.

Fungsi malloc adalah fungsi perpustakaan untuk bahasa C. Apa yang dilakukan adalah mengagihkan ingatan dan mengembalikan penunjuk kepadanya. Di sisi lain, pengendali baru adalah membina tahap bahasa, dan tugasnya adalah untuk membuat objek dengan mengalokasikan memori dan memanggil pembangun yang sesuai. Satu lagi perbezaan fungsi malloc dari pengendali baru ialah malloc memerlukan typecasting semasa pengisytiharan manakala yang pertama tidak. Juga, fungsi malloc menggunakan perkataan "percuma" untuk membersihkan memori semasa "padam" digunakan dalam operator baru untuk tujuan yang sama.

Kedua-duanya juga mempunyai cara yang berbeza dalam menangani kegagalan dan keletihan memori. Jika fungsi malloc gagal, ia akan kembali dengan penunjuk NULL. Pengendali baru tidak pernah mengembalikan penunjuk NULL tetapi menunjukkan kegagalan dengan membuang pengecualian sebaliknya. Ini adalah kelebihan untuk pengendali yang baru kerana pemrogram komputer tidak perlu menyemak penunjuk yang dikembalikan setiap kali ia memanggil baru atau pengaturcara komputer akan terlepas pengecualian seperti itu.

Fungsi malloc tidak membina objek (disebut pembina objek) tetapi pengendali baru tidak. Satu lagi kelebihan baru adalah bahawa pengendali boleh dibebani manakala fungsi malloc tidak boleh. Pengendali baru memerlukan sejumlah objek tertentu untuk diperuntukkan sementara fungsi malloc memerlukan menentukan jumlah bilangan bait untuk diperuntukkan.

Memori juga boleh disusun semula atau diperuntukkan 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 malloc fungsi ke atas pengendali baru ialah malloc boleh memanjangkan jumlah memori dengan cepat. Ini masih menggunakan malloc dan realloc. Apabila melakukan keadaan yang sama dalam bahasa C ++, pemrogram perlu mencipta memori baru dengan pengendali yang baru. Memori baru perlu mempunyai saiz yang diubah suai dan akan disalin ke atas data dari penimbal asal.Penimbal asal perlu dipadam selepas salinan. Ini boleh menjadi proses yang lambat untuk pengaturcara.

Operator baru mempunyai leverage atas fungsi malloc dengan mengembalikan jenis data yang tepat sementara fungsi mengembalikan tidak sah *. Fungsi malloc juga tidak boleh dibebankan berbanding pengendali baru di mana muatan lebihan mungkin. Satu lagi ciri pengendali baru adalah bahawa terdapat kurang peluang untuk membuat kesilapan dengan pengendali berbanding berfungsi malloc. Ini dianggap sebagai tambahan untuk pengaturcara terutamanya jika mereka menulis banyak kod atau mengerjakan kod pada jadual yang ketat. Fungsi malloc dan percuma boleh digunakan dalam C ++, tetapi ia tidak dapat digunakan secara langsung. Adalah dianjurkan untuk menggunakan baru dan hapuskan sebaliknya.

Ringkasan:

1. Malloc adalah fungsi sementara baru adalah pengendali.

2. Baru adalah ciri khusus dalam bahasa C ++ manakala malloc digunakan dalam bahasa C.

3. Pengendali baru berikut dengan "hapuskan" sementara fungsi malloc berjalan dengan "percuma. "

4. Fungsi malloc adalah fungsi perpustakaan untuk bahasa C manakala pengendali baru adalah bahasa yang membina dari bahasa C ++.