Perbedaan antara Malloc dan New Perbedaan Antara

Anonim

Malloc vs New

One dari pertanyaan wawancara yang paling umum dalam menyewa seorang programmer komputer adalah untuk pemohon / pemrogram komputer untuk menjelaskan perbedaan antara malloc dan yang baru. Baik malloc maupun yang baru ada di ranah bahasa komputer dan sering digunakan oleh pemrogram komputer untuk alokasi memori dinamis.

Perbedaan mendasar antara keduanya adalah bahwa malloc ada dalam bahasa C sementara yang baru adalah fitur spesifik bahasa C ++. Malloc juga merupakan fungsi (yang, bagi programmer, memerlukan beberapa waktu untuk mengeksekusi) sementara yang baru adalah program operator (yang memotong waktu eksekusi). Ini adalah keuntungan dari operator baru karena pemrogram yang melakukan pemrograman real-time memiliki kebutuhan untuk memilih metode tercepat untuk digunakan.

Operator baru tipe-safe tidak seperti fungsi malloc.

Fungsi malloc adalah fungsi perpustakaan untuk bahasa C. Yang dilakukan hanyalah mengalokasikan memori dan mengembalikan pointer ke sana. Di sisi lain, operator baru adalah konstruksi tingkat bahasa, dan tugasnya adalah untuk memberi instantiate objek dengan mengalokasikan memori dan memanggil konstruktor yang sesuai. Perbedaan lain dari fungsi malloc dari operator baru adalah malloc membutuhkan typecasting selama deklarasi sementara yang pertama tidak. Selain itu, fungsi malloc menggunakan kata "bebas" untuk menghapus memori saat "delete" digunakan di operator baru untuk tujuan yang sama.

Keduanya juga memiliki cara yang berbeda dalam mengatasi kegagalan dan kehabisan memori. Jika fungsi malloc gagal, ia mengembalikannya dengan pointer NULL. Operator baru tidak pernah mengembalikan pointer NULL tapi menunjukkan kegagalan dengan melemparkan pengecualian sebagai gantinya. Ini adalah keuntungan bagi operator baru karena programmer komputer tidak harus memeriksa pointer yang dikembalikan setiap kali panggilan baru atau programmer komputer akan kehilangan pengecualian seperti itu.

Function malloc tidak membangun sebuah objek (disebut constructor of object) tapi operator baru melakukannya. Keuntungan lain yang baru adalah operator bisa kelebihan beban sedangkan fungsi malloc tidak bisa. Operator baru memerlukan sejumlah objek tertentu untuk dialokasikan sementara fungsi malloc memerlukan menentukan jumlah byte yang akan dialokasikan.

Memori juga bisa berukuran ulang atau dialokasikan kembali dengan menggunakan fungsi malloc dengan menggunakan realloc. Namun, operator baru tidak dapat melakukan fungsi ini dan menganggapnya sebagai salah satu kelemahan utama operator. Keunggulan lain dari fungsi malloc over operator baru adalah malloc dapat memperpanjang jumlah memori dengan cepat. Ini masih menggunakan malloc dan realloc. Saat melakukan situasi yang sama dalam bahasa C ++, programmer harus membuat potongan memori baru dengan operator baru. Memori baru harus memiliki ukuran yang dimodifikasi dan akan disalin melalui data dari buffer asli.Buffer asli harus dihapus setelah salinannya. Ini bisa menjadi proses yang lambat bagi programmer.

Operator baru memiliki pengaruh atas fungsi malloc dengan mengembalikan tipe data yang tepat saat fungsi mengembalikan void *. Fungsi malloc juga tidak bisa kelebihan beban dibandingkan dengan operator baru dimana overloading itu mungkin. Fitur lain dari operator baru adalah bahwa ada sedikit kemungkinan melakukan kesalahan dengan operator dibandingkan dengan fungsi malloc. Ini dianggap sebagai nilai tambah bagi programmer terutama jika mereka menulis banyak kode atau mengerjakan sebuah kode pada jadwal yang ketat. Fungsi malloc dan gratis bisa digunakan di C ++, tapi tidak bisa digunakan secara langsung. Dianjurkan untuk menggunakan yang baru dan menghapusnya.

Ringkasan:

1. Malloc adalah fungsi sementara baru adalah operator.

2. Baru adalah fitur spesifik bahasa C ++ sementara malloc digunakan dalam bahasa C.

3. Operator baru berikut dengan "delete" sedangkan fungsi malloc berjalan dengan "gratis. "

4. Fungsi malloc adalah fungsi perpustakaan untuk bahasa C sementara operator baru adalah bahasa yang membangun dari bahasa C ++.