C++学习笔记---new/delete

来源:互联网 发布:ajax提交表单数据 编辑:程序博客网 时间:2024/04/26 12:15
在C++中,用new/delete操作符取代malloc/free
 申请一个对象:
 int* p=new int;
 释放
 delete p;
  注意:
 (1)new的返回值直接就是对象指针,不用再转换
 (2)new的时候可以设初始值 如:new int(12)
 
 申请多个对象:
 例如,申请1024个int对象:
 int* p = new int [1024];
 释放
 delete [ ] p;
 注意:
 (1)用[]指定对象个数
 (2)如果new的时候用了[],则释放的时候使用delete[]操作符
 
 使用原则:
 (1)用new申请的内存,必须用delete释放
 (2)用new[ ]申请的内存,必须用delete[ ]释放
 (3)用完之时,及时释放,delete之后指针所指向的内存不在可用,最好释放后置为空指针NULL
 
 动态创建对象
 对于class类型,必须用new/delete来创建、销毁。
 new:动态创建一个对象:
 (1)申请一块内存
 (2)内部调用了构造函数
例:
 Circle * c = new Circle(); 默认构造函数
 Circle * c = new Circle; 不加括号也可以
 Circle * c = new Circle(1,1,4); 传构造参数
 
 delete:释放这个对象:
 (1)调用了析构函数
 (2)释放内存
 例:
delete c;
 new:动态创建多个对象
 Circle * c = new Circle[4];
 delete [ ] c;
 注:含有“默认构造函数”的类,才可能使用new[] 一次性创建多个对象。
 
 new和malloc巨大区别:
 malloc 返回的是一片内存,不是对象(malloc不负责构造);
 new 返回的是一个可以正常工作的对象(因为它调用了构造函数);
 所以,new、delete绝不仅仅是申请内存这么简单,它是申请了内存,并且构造了对象。
 
原创粉丝点击