阿里面試官問的乙個問題,沒答出來。
new申請記憶體的位置處於自由儲存區,為動態物件分配空間;malloc分配空間處於堆
new/delete屬於c++中的乙個關鍵字或操作符,需要編譯器支援,malloc/free屬於c的乙個庫函式,需要標頭檔案支援
new不用指定要分配的記憶體大小,由編譯器自動計算,malloc需要顯式的指出記憶體大小
new分配記憶體成功後返回的是物件型別指標,因此不用進行強制型別轉換,是符合型別安全性的操作符,malloc返回的是void*型別,需要進行強制型別轉換成需要的型別。
new分配失敗會丟擲bac_alloc異常,malloc返回null
new經歷三個過程:呼叫operator new函式申請足夠記憶體,執行建構函式構造物件,返回物件型別指標
(delete:呼叫析構函式,編譯器呼叫operator delete()釋放記憶體)
malloc沒有呼叫建構函式和析構函式的過程。
malloc函式 new和malloc的區別
1 申請的記憶體所在位置 new操作符從自由儲存區上為物件動態分配記憶體空間,而malloc函式從堆上動態分配記憶體。自由儲存區是c 基於new操作符的乙個抽象概念,凡是通過new操作符進行記憶體申請,該記憶體即為自由儲存區。而堆是作業系統中的術語,是作業系統所維護的一塊特殊記憶體,用於程式的記憶體...
C 中new和malloc的區別
1 new是c 中的操作符,malloc是c中的乙個函式.new是個操作符,和什麼 有一樣的地位,malloc是個分配記憶體的函式,供你呼叫的.正因為如此,new是保留字,不需要標頭檔案支援,malloc需要標頭檔案庫函式支援.2 new不止是分配記憶體,而且會呼叫類的建構函式,同理delete會呼...
細談C 中的new和malloc
摘自 new和malloc的區別 1 new 是c 中的操作符,malloc是c 中的乙個函式 2 new 不止是分配記憶體,而且會呼叫類的建構函式,同理delete會呼叫類的析構函式,而malloc則只分配記憶體,不會進行初始化類成員的工作,同樣free也不會呼叫析構函式 3 記憶體洩漏對於mal...