malloc和new有什么区别
生活随笔
收集整理的這篇文章主要介紹了
malloc和new有什么区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
malloc和new有以下不同:
- new、delete是操作符,可以重載,只能在c++中使用。
- malloc、free是函數,可以覆蓋,c、c++中都可以使用。
- new可以調用對象的構造函數,對應的delete調用相應的析構函數。
- malloc僅僅負責分配內存,free僅僅回收內存,并不執行構造和析構函數。
- new、delete返回的是某種數據類型指針,malloc、free返回的是void指針。
注意:malloc申請的內存空間要用free釋放,而new申請的內存空間要用delete釋放,不要混用。因為兩者實現的機理不同。
?
有了malloc/free為什么還要new/delete?
malloc/free是C++/C語言的標準庫函數,new/delete是C++的運算符。它們都可用于申請動態內存和釋放內存
對于非內部數據類型的對象而言,光用malloc/free無法滿足動態對象的要求。對象在創建的同時要自動執行構造函數,對象在消亡之前要自動執行析構 函數。由于malloc/free是庫函數而不是運算符,不在編譯器控制權限之內,不能夠把執行構造函數和析構函數的任務強加于malloc/free。 對于內部數據類型的“對象”沒有構造與析構過程,對它們而言,malloc/free和new/delete是等價的。為什么C++不把malloc /free淘汰出局呢?這是因為C++程序經常要調用C函數,而C程序只能用malloc/free管理動態內存。
總結
以上是生活随笔為你收集整理的malloc和new有什么区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Erlang的散列数据结构
- 下一篇: GNU C的扩展