malloc是c的庫函數,從堆區申請內存。
(+)new是c++運算符,從自由存儲區申請內存。
malloc返回值是void*,需要判斷返回值是否為空指針。如果申請內存成功,返回申請的內存地址,申請內存失敗返回空指針。
使用free()函數釋放內存,非空指針只能釋放一次。
(+)new 返回值是申請對象的指針,申請內存失敗拋出std::bad_alloc異常。使用delete釋放普通對像,delete[] 釋放數組。
malloc,free函數不能重載,不會調用構造函數,釋放的時候不會調用析構函數
(+)new,delete可以重載。
(+)申請內存的步驟:先new操作符去申請內存,然后調用構造函數初始化,最后返回指向對象的指針。
(+)釋放內存的步驟:先調用對象的析構函數,然后再用delete釋放內存。