C語(yǔ)言中的malloc/free和C++中的new/delete的區(qū)別和聯(lián)系
相同點(diǎn):
它們都是對(duì)內(nèi)存進(jìn)行管理
區(qū)別:
區(qū)別1:類型
malloc/free是函數(shù)缸棵,而new/delete是關(guān)鍵字坐慰、操作符
區(qū)別2:作用
malloc/free只是簡(jiǎn)單的進(jìn)行內(nèi)存的申請(qǐng)和釋放;new/delete除了進(jìn)行內(nèi)存申請(qǐng)和釋放呵晚,還會(huì)調(diào)用對(duì)象的構(gòu)造函數(shù)和析構(gòu)函數(shù)進(jìn)行空間的初始化和清理
區(qū)別3:參數(shù)與返回值
malloc/free需要手動(dòng)計(jì)算申請(qǐng)內(nèi)存的空間大小,而且返回值是void*沫屡,需要自己轉(zhuǎn)換成所需要的類型饵隙;
new/delete可以自己計(jì)算類型的大小,返回為對(duì)應(yīng)的類型指針