1. 程式人生 > >面試題5——C中的malloc和C++中的new有什麼區別?

面試題5——C中的malloc和C++中的new有什麼區別?

malloc和new有以下區別:
(1)new,delete是操作符,只能在C++中使用;
(2)malloc,free是函式,可以覆蓋,C,C++中都可以使用;
(3)new可以呼叫物件的建構函式,對應的delete呼叫相應的解構函式;
(4)malloc僅僅分配記憶體,free僅僅回收記憶體,並不執行構造和解構函式;
(5) malloc/free需要手動計算型別大小且返回值為void*,new/delete可自己計算對應型別的大小。
(6)malloc/free申請空間後得判空,new/delete則不需要。
(7) new直接跟型別,malloc跟位元組數個數。
(8)new/delete的底層呼叫了malloc/free。