new/delete和malloc/free的區別

通俗易懂版本:http://zhidao.baidu.com/question/86185100
1 new/delete和malloc/free最大區別是對對象的理解。
若是你使用
Foo* foo = malloc(sizeof(Foo));//Foo是一個類初始化,那麼你將不會調用Foo的構造方法,而只是單純的分配空間。並且咱們只認爲你是分配一個空間,而不是想建立一個對象。
Foo* foo = new Foo();則會調用Foo的構造方法來初始化對象,也就是說你既要分配空間又要初始化這段空間,讓它變成一個對象。
對於delete和free也有一樣的問題,就是delete會調用析構函數,free則不會。
說白了,new\delete玩的是對象,而malloc\free僅僅是內存空間而已
2 對於除去對象之外的其餘狀況,好比int和float等
int* Array=new int[10];和int* Array=malloc(sizeof(int)*10);只存在使用技巧的差異,沒有本質的差異。
3 最後也提醒你new\delete和malloc\free只能成對使用,不能混了。

 

其餘版本:html

http://blog.sina.com.cn/s/blog_6fc5bfa90100qgd7.html函數

http://jackchen0227.iteye.com/blog/1073572htm

相關文章
相關標籤/搜索