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
最新推荐文章于 2023-03-24 15:45:04 发布