new與malloc的區別


malloc是c的庫函數,從堆區申請內存。
(+)new是c++運算符,從自由存儲區申請內存。

malloc返回值是void*,需要判斷返回值是否為空指針。如果申請內存成功,返回申請的內存地址,申請內存失敗返回空指針。
使用free()函數釋放內存,非空指針只能釋放一次。
(+)new 返回值是申請對象的指針,申請內存失敗拋出std::bad_alloc異常。使用delete釋放普通對像,delete[] 釋放數組。

malloc,free函數不能重載,不會調用構造函數,釋放的時候不會調用析構函數
(+)new,delete可以重載。
(+)申請內存的步驟:先new操作符去申請內存,然后調用構造函數初始化,最后返回指向對象的指針。
(+)釋放內存的步驟:先調用對象的析構函數,然后再用delete釋放內存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM