New:從對空間分配一塊類型大小空間,返回首地址 其中常量是爲對象指定初始值,可缺省,創建數組對象時不能爲對象指定初始值 類型 指針 = new 類型; 類型 指針 = new 類型(常量);//直接初始化 類型 指針 = new 類型[表達式];//定義數組 Delete:其中指針變量必須爲new 返回的指針 Delete 指針; Delete[] 指針變量; |
//1,c++中的new能自動的調用類的構造函數,delete能調用類的析構函數 //2,malloc不會調用類的構造函數 free也不會調用類的析構函數 只釋放類的空間,不釋放類內部的指針域所指向的空間 //3,基礎數據類型malloc,new ,free,delete可以混用,而在類類型中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; } |
c++中new與delete
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.