C++中new和malloc的區別(C++面試常問題目)

  • new分配內存按照數據類型進行分配,malloc分配內存按照指定的大小分配;
  • new返回的是指定對象的指針,而malloc返回的是void*,因此malloc的返回值一般都需要進行類型轉化。
  • new不僅分配一段內存,而且會調用構造函數,malloc不會。
  • new分配的內存要用delete銷燬,malloc要用free來銷燬;delete銷燬的時候會調用對象的析構函數,而free則不會。
  • new是一個操作符可以重載,malloc是一個庫函數。
  • malloc分配的內存不夠的時候,可以用realloc擴容。擴容的原理?new沒用這樣操作。
  • new如果分配失敗了會拋出bad_malloc的異常,而malloc失敗了會返回NULL。
  • 申請數組時: new[]一次分配所有內存,多次調用構造函數,搭配使用delete[],delete[]多次調用析構函數,銷燬數組中的每個對象。而malloc則只能sizeof(int) * n。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章