new/delete與malloc/free的區別
new/delete是c++操作符,malloc/free是庫函式
new分配記憶體按照資料型別進行分配,malloc分配記憶體按照大小分配
new在動態分配記憶體的時候可以初始化物件,呼叫其建構函式,delete在釋放記憶體時呼叫物件的析構函式。
而malloc只分配一段給定大小的記憶體,並返回該記憶體首位址指標,如果失敗,返回null。
new/delete可以過載,而malloc不行
new返回的是指定物件的指標,而malloc返回的是void*,因此malloc的返回值一般都需要進行型別轉化
對於資料c++定義new專門進行動態陣列分配,用delete進行銷毀。new會一次分配記憶體,然後多次呼叫建構函式;delete會先多次呼叫析構函式,然後一次性釋放
new如果分配失敗了會丟擲bad_malloc的異常,而malloc失敗了會返回null。因此對於new,正確的姿勢是採用try…catch語法,而malloc則應該判斷指標的返回值。為了相容很多c程式設計師的習慣,c++也可以採用new nothrow的方法禁止丟擲異常而返回null;
malloc free與new delete的區別
相同點 都可用於申請動態記憶體和釋放記憶體 不同點 1 操作物件有所不同。malloc與free是c c 語言的標準庫函式,new delete 是c 的運算子。對於非內部資料類的物件而言,光用maloc free 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...
malloc free與new delete的區別
相同點 都可用於申請動態記憶體和釋放記憶體 不同點 1 操作物件有所不同。malloc與free是c c 語言的標準庫函式,new delete 是c 的運算子。對於非內部資料類的物件而言,光用maloc free 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...
malloc free與new delete的區別
相同點 都可用於申請動態記憶體和釋放記憶體 不同點 1 操作物件有所不同。malloc與free是c c 語言的標準庫函式,new delete 是c 的運算子。對於非內部資料類的物件而言,光用maloc free 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...