malloc/free ,new/delete
相信大家對上面兩個(gè)命令都不默認(rèn)
大家這兩個(gè)命令其實(shí)是又區(qū)別的
首先
1.malloc 與free 是C++/C 語言的標(biāo)準(zhǔn)庫函數(shù),new/delete 是C++的運(yùn)算符
2.不能夠把執(zhí)行構(gòu)造函數(shù)和析構(gòu)函數(shù)的任務(wù)強(qiáng)加于malloc/free
3.兩者都可以使用異常出錯(cuò)函數(shù),不過個(gè)人覺得malloc/free對于異常出錯(cuò)處理更加方便
malloc/free這個(gè)命令只是對內(nèi)存操作,純內(nèi)存操作函數(shù)
而new/delete命令會(huì)執(zhí)行構(gòu)造函數(shù)和析構(gòu)函數(shù)
所以我的意見是:
對于非系統(tǒng)內(nèi)部數(shù)據(jù)的話,盡量使用new/delete
當(dāng)然如果是自己新建類的話,也使用new/delete,不然怎么調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)那?
對于系統(tǒng)內(nèi)部函數(shù)的話,使用malloc/free
int *p = (int*)malloc(sizeof(int)*num);
class A
{
???A();
???~A();
};
A *a = new A;
new也有一個(gè)好處,可以處理不同的構(gòu)造函數(shù)
Example Code:
class A
{
???A();
?? ~A();
}
A *a = new A;
在類聲明種加入
A(int x,int y);
就可以使用
A *a?= new A(1,2);