Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Perbezaan antara malloc dan baru dalam c++

Perbezaan antara malloc dan baru dalam c++

下次还敢
下次还敢asal
2024-05-01 12:06:17657semak imbas

Perbezaan utama antara malloc dan baharu dalam C++ ialah memori yang diperuntukkan oleh malloc perlu dikeluarkan secara manual, manakala memori yang diperuntukkan oleh baru dikeluarkan secara automatik. Malloc mengembalikan NULL jika peruntukan gagal, dan membuang pengecualian jika peruntukan baru gagal. new secara automatik memulakan memori yang diperuntukkan, dan memori yang diperuntukkan oleh malloc perlu dimulakan secara manual. baharu menyokong ciri lanjutan, seperti peruntukan tatasusunan, pengalokasi tersuai, dsb., malloc tidak menyokongnya.

Perbezaan antara malloc dan baru dalam c++

Perbezaan antara malloc dan baru dalam C++

malloc dan baru kedua-duanya adalah fungsi peruntukan memori yang biasa digunakan dalam C++, tetapi terdapat beberapa perbezaan utama di antara mereka. 1. Sintaks

baharu: Jika peruntukan berjaya, ia akan mengembalikan penunjuk ke memori yang diperuntukkan Jika gagal, ia akan membuang pengecualian std::bad_alloc.

3 Pengurusan memori

  • malloc:
  • Memori yang diperuntukkan diuruskan oleh perpustakaan masa jalan C dan perlu dikeluarkan secara manual menggunakan percuma.
  • baharu:std::bad_alloc异常。

3. 内存管理

  • malloc: 分配的内存是由C运行时库管理的,需要手动使用free释放。
  • new: 分配的内存是由C++运行时库管理的,可以使用delete自动释放。

4. 初始化

  • malloc: 分配的内存未经初始化,需要手动进行初始化。
  • new: 分配的内存会自动使用构造函数进行初始化。

5. 异常处理

  • malloc: 分配失败不会抛出异常,而是返回NULL。
  • new: 分配失败会抛出std::bad_alloc Memori yang diperuntukkan diuruskan oleh perpustakaan masa jalan C++ dan boleh dikeluarkan secara automatik menggunakan padam.

4. Permulaan

  • malloc: Memori yang diperuntukkan tidak dimulakan dan perlu dimulakan secara manual.
  • baharu: Memori yang diperuntukkan dimulakan secara automatik menggunakan pembina.

5. Pengendalian pengecualian

🎜malloc:🎜 Kegagalan untuk memperuntukkan tidak akan membuang pengecualian, tetapi mengembalikan NULL. 🎜🎜🎜baharu:🎜 Kegagalan untuk memperuntukkan akan membuang std::bad_alloc pengecualian, yang boleh digunakan untuk pengendalian pengecualian. 🎜🎜🎜🎜6. Ciri lanjutan🎜🎜🎜🎜🎜baharu:🎜 Menyokong pelbagai ciri lanjutan, seperti peruntukan tatasusunan, pengagih tersuai, penempatan baharu, dsb. 🎜🎜🎜malloc:🎜 tidak menyokong ciri lanjutan ini. 🎜🎜🎜🎜Ringkasan🎜🎜🎜Secara umum, malloc dan baharu adalah kedua-dua fungsi peruntukan memori, tetapi baharu adalah lebih selamat dan lebih mudah untuk digunakan, serta boleh memulakan dan mengendalikan pengecualian secara automatik. Untuk senario peruntukan memori mudah, malloc boleh digunakan, tetapi untuk senario kompleks yang memerlukan lebih banyak ciri, baharu adalah disyorkan. 🎜

Atas ialah kandungan terperinci Perbezaan antara malloc dan baru dalam c++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn