Perbedaan antara malloc dan baru
- 2315
- 430
- Mr. Doug Effertz
Malloc vs baru
Salah satu pertanyaan wawancara yang paling umum dalam mempekerjakan seorang programmer komputer adalah untuk pemohon/programmer komputer untuk menjelaskan perbedaan antara malloc dan baru. Baik malloc dan baru ada di ranah bahasa komputer dan sering digunakan oleh pemrogram komputer untuk alokasi memori yang dinamis.
Perbedaan dasar antara keduanya adalah bahwa malloc ada dalam bahasa-C sedangkan yang baru adalah fitur spesifik dari bahasa C ++. Malloc juga merupakan fungsi (yang, untuk pemrogram, membutuhkan waktu untuk dieksekusi) sementara yang baru adalah program operator (yang memotong waktu eksekusi). Ini adalah manfaat dari operator baru karena pemrogram yang melakukan pemrograman waktu nyata memiliki kebutuhan untuk memilih metode tercepat untuk digunakan.
Operator baru tipe-aman tidak seperti fungsi malloc.
Fungsi malloc adalah fungsi perpustakaan untuk c-language. Yang dilakukan hanyalah mengalokasikan memori dan mengembalikan pointer ke sana. Di sisi lain, operator baru adalah konstruksi tingkat bahasa, dan tugasnya adalah untuk membuat objek dengan mengalokasikan memori dan memanggil konstruktor yang sesuai. Perbedaan lain dari fungsi malloc dari operator baru adalah bahwa malloc memerlukan typecasting selama deklarasi sementara yang pertama tidak. Juga, fungsi malloc menggunakan kata "gratis" untuk menghapus memori sementara "hapus" digunakan dalam operator baru untuk tujuan yang sama.
Keduanya juga memiliki cara berbeda dalam menangani kegagalan dan kelelahan memori. Jika fungsi malloc gagal, ia kembali dengan penunjuk nol. Operator baru tidak pernah mengembalikan penunjuk nol tetapi menunjukkan kegagalan dengan melemparkan pengecualian sebagai gantinya. Ini adalah keuntungan bagi operator yang baru karena programmer komputer tidak harus memeriksa pointer yang dikembalikan setiap kali memanggil baru atau programmer komputer akan kehilangan pengecualian seperti itu.
Fungsi malloc tidak membangun objek (disebut konstruktor objek) tetapi operator new tidak. Keuntungan lain dari yang baru adalah bahwa operator dapat kelebihan beban sementara fungsi malloc tidak bisa. Operator Baru membutuhkan jumlah objek tertentu untuk dialokasikan sementara fungsi malloc memerlukan menentukan jumlah total byte untuk dialokasikan.
Memori juga dapat diukur 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. Keuntungan lain dari fungsi malloc dibandingkan operator baru adalah bahwa 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 untuk seorang programmer.
Operator baru memiliki leverage atas fungsi malloc dengan mengembalikan tipe data yang tepat saat fungsi mengembalikan batal*. Fungsi malloc juga tidak dapat kelebihan beban dibandingkan dengan operator baru di mana kelebihan dimungkinkan. Fitur lain dari operator baru adalah bahwa ada lebih sedikit peluang untuk membuat kesalahan dengan operator dibandingkan dengan fungsi malloc. Ini dianggap sebagai nilai tambah untuk programmer terutama jika mereka menulis banyak kode atau mengerjakan kode dengan jadwal yang ketat. Fungsi malloc dan gratis dapat digunakan dalam c ++, tetapi tidak dapat digunakan secara langsung. Disarankan untuk menggunakan yang baru dan hapus sebagai gantinya.
Ringkasan:
1. Malloc adalah fungsi sementara yang baru adalah operator.
2. Baru adalah fitur spesifik dari bahasa C ++ saat malloc digunakan dalam bahasa-C.
3. Operator baru mengikuti dengan "hapus" sementara fungsi malloc berjalan dengan "gratis."
4. Fungsi malloc adalah fungsi perpustakaan untuk c-bahasa sementara operator baru adalah konstruksi tingkat bahasa dari bahasa C ++.