C++学习笔记——运算符new与delete

C++中使用new、new[ ]、delete、和delete[ ]运算符来进行动态内存分配和释放。
new 分配一个空间;
delete 释放由new分配的单一空间;

new[ ] 分配一个数组;
delete[ ] 释放由new[ ]分配的数组。

语法: new + 数据类型。

new运算符用来动态地分配存储空间。
如果分配成功,则返回一个指向分配的存储空间的指针。

int *p;  
p = new int;

delete运算符用来释放空间。

delete p;

new[ ] 运算符用于动态分配一个数组。
如果分配成功,则第一个单元的的地址将保存在指针中。

p = new int[50];

delete[ ] 运算符用于释放空间。
注:在释放由new[]创建的对象数组时,"[ ]"不可省略!而空格中的值可缺省。

delete[]p;

在创建对象时,如果要动态分配的方式,可以使用运算符new在堆中为其分配内存空间;在对象使用完毕时,要用delete来释放空间;

Point* data;// 创建了对象指针,但没有创建指针所指向的对象。

对象引用不分配储存空间。

========================== 更新 ==========================
堆对象:在程序运行时,根据需要随时可以创建可以被创建和删除的对象。
创建和删除堆对象分别用到:new和delete;

语法: new <数据类型> (<初始值列表>)

Point *obj;	// 创建一个指向类Point的对象指针obj.
obj = new Point(3, 6);	
/*  运算符new创建一个类Point的对象,将它的地址值赋给obj;
	对该对象进行初始化,调用具有两个参数构造函数,初始值为3和7. */

由于堆是有限的,它可能会变拥挤,使申请空间会失败,而new返回一个空指针,因此,必须在使用new生成的指针之前进行检查。

Point *obj;
obj = new Point(2);	// 分配空间	
if(!obj) // 检查空间
{
	cout << "Out of Memory!" << endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值