C/C++面試題知識點總結(持續更新)

1、new和delete的作用

  1. new / new[]:完成兩件事,先底層調用 malloc 分配內存,然後調用構造函數(創建對象)。
  2. delete/delete[]:也完成兩件事,先調用析構函數(清理資源),然後底層調用 free 釋放空間。
  3. new 在申請內存時會自動計算所需字節數,而 malloc 則需我們自己輸入申請內存空間的字節數。

2、new和malloc的區別

  1. new是運算符,malloc()是一個庫函數
  2. new會調用構造函數,malloc不會;
  3. new返回指定類型指針,malloc返回void*指針,需要強制類型轉換;
  4. new會自動計算需分配的空間,malloc不行;
  5. new可以被重載,malloc不能。

3、malloc/free、new/delete使用要點

malloc/free使用要點:

  1. malloc默認返回類型是void*,需要進行強制類型轉換;
  2. malloc內部是字節數,需要用sizeof計算字節數。

new/delete使用要點:

  1. new創建對象時完成了初始化;
  2. new創建對象數組,只能使用對象的無參構造函數;
  3. delete釋放對象數組時,不要丟了[],delete []p。

4、C++中有了malloc / free , 爲什麼還需要 new / delete?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章