new和delete运算符用于动态分配和撤销内存的运算符

new和delete运算符用于动态分配和撤销内存的运算符 new用法: 1. 开辟单变量地址空间 1)new int; //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a. 2)int *a = new int(5) 作用同上,但是同时将整数赋值为5 2. 开辟数组空间 一维: int *a = new int[100];开辟一个大小为100的整型数组空间 二维: int **a = new int[5][6] 三维及其以上:依此类推. 一般用法: new 类型 [初值] delete用法: 1. int *a = new int; delete a; //释放单个int的空间 2.int *a = new int[5]; delete [] a; //释放int数组空间 int *p1 = (int *)malloc(sizeof(int) * length); int *p2 = new int[length]; 运算符new比malloc要简单多了,这是因为new内置了sizeof、类型转换和类型安全检查功能。对于非内部数据类型的对象而言,new在创建动态对象的同时完成了初始化工作。如果对象有多个构造函数,那么new的语句也可以有多种形式。例如 class Obj { public : Obj(void); // 无参数的构造函数 Obj(int x); // 带一个参数的构造函数 … } void Test(void) { Obj *a = new Obj; Obj *b = new Obj(1); // 初值为1 … delete a; delete b; } 如果用new创建对象数组,那么只能使用对象的无参数构造函数。例如 Obj *objects = new Obj[100]; // 创建100个动态对象 不能写成 Obj *objects = new Obj[100](1);// 创建100个动态对象的同时赋初值1 在用delete释放对象数组时,留意不要丢了符号‘[]’。例如 delete []objects; // 正确的用法 delete objects; // 错误的用法 后者相当于delete objects[0],漏掉了另外99个对象。 malloc 和free只是分配了空间. 而new和delete不仅分配了空间,还完成了对构造函数和析购函数的调用,当然这是对对象而言。 两者在对基本数据类型操作时候,没有多大区别,区别在于对对象进行操作时。malloc和free是函数,但new和delete是操作符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值