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;
}
发布了27 篇原创文章 · 获赞 1 · 访问量 996

猜你喜欢

转载自blog.csdn.net/qq_41320782/article/details/104294187
今日推荐