c++中new與delete

New從對空間分配一塊類型大小空間返回首地址

其中常量是爲對象指定初始值,可缺省,創建數組對象時不能爲對象指定初始值

類型 指針 = new 類型

類型 指針 = new 類型(常量);//直接初始化

類型 指針 = new 類型[表達式];//定義數組

Delete其中指針變量必須爲new 返回的指針

Delete 指針

Delete[]  指針變量;

//1,c++中的new能自動的調用類的構造函數,delete能調用類的析構函數

//2,malloc不會調用類的構造函數 free也不會調用類的析構函數

只釋放類的空間,不釋放類內部的指針域所指向的空間

//3,基礎數據類型malloc,new freedelete可以混用而在類類型中new 出的內存必須用delete釋放因爲向下兼容free是c語言語法無法釋放c++中新數據類型的內存 

void mainobjplay()

{

//Test1 t1(1, 2);

Test1 *p2 = (Test1 *)malloc(sizeof(Test1));

free(p2);

Test1 *p1 = new Test1(3, 4);

delete p1;

}

int CreateTest1(Test1 **p)

{

Test1 *tmp = new Test1(5, 6);

//p是實參的地址 *(實參的地址)去間接修改實參的值

*p = tmp;

return 0;

}

int CreateTest2(Test1 * &myp)

{

myp = new Test1(5, 6);

//p是實參的地址 *(實參的地址)去間接修改實參的值

return 0;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章