有了malloc/free,为什么还要new/delete?
生活随笔
收集整理的這篇文章主要介紹了
有了malloc/free,为什么还要new/delete?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
有了malloc/free,為什么還要new/delete
- malloc與free是C/C++的標準庫函數(shù),new/delete是C++的運算符。
- 對于非內(nèi)部數(shù)據(jù)類型的對象而言,光用malloc/free無法滿足動態(tài)對象的要求。
- C++需要一個能完成動態(tài)內(nèi)存分配和初始化工作的運算符new,以及一個能完成清理與釋放內(nèi)存工作的運算符delete。
- 總結(jié)
malloc與free是C/C++的標準庫函數(shù),new/delete是C++的運算符。
它們都可用于申請動態(tài)內(nèi)存和釋放內(nèi)存。
對于非內(nèi)部數(shù)據(jù)類型的對象而言,光用malloc/free無法滿足動態(tài)對象的要求。
對象在創(chuàng)建的同時要自動執(zhí)行構(gòu)造函數(shù),對象的消亡之前要自動執(zhí)行析構(gòu)函數(shù)。由于malloc/free是庫函數(shù)而不是運算符,不在編譯器控制權(quán)限之內(nèi),不能夠把執(zhí)行構(gòu)造函數(shù)和析構(gòu)函數(shù)的任務(wù)強加于malloc/free。
因此,
C++需要一個能完成動態(tài)內(nèi)存分配和初始化工作的運算符new,以及一個能完成清理與釋放內(nèi)存工作的運算符delete。
注意:new/delete不是庫函數(shù)。請看下面例子:
總結(jié)
以上是生活随笔為你收集整理的有了malloc/free,为什么还要new/delete?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中4种强制类型转换 ?
- 下一篇: map可以用结构体作为健值吗?