当前位置: 首页 > 工具软件 > delete > 使用案例 >

new和delete的使用

孙恩
2023-12-01

1

new和delete的使用

new其实就是告诉计算机开辟一段新的空间,但是和一般的声明不同的是,new开辟的空间在堆上,而一般声明的变量存放在栈上。

通常来说,当在局部函数中new出一段新的空间,该段空间在局部函数调用结束后仍然能够使用,可以用来向主函数传递参数。另外需要注意的是,new的使用格式,new出来的是一段空间的首地址。所以一般需要用指针来存放这段地址。

例如

int *p=new int(5);

而且使用new开辟堆空间后,需要再使用delete释放空间,不然会造成内存泄露。

new除了能申请int,double这种数据类型外,还可以为类申请内存空间。

例如 

Complex *p =new Complex(1,1);

Complex *q=new Complex[3];

值得注意的是,上述代码第一行是创建了一个对象,而第二行则创建了三个对象。因此在delete操作时也有差异

delete p;

delete [] q;

第二行的delete不加[]也会造成内存泄露(三个对象只删掉了第一个)

2

new 的作用

new包含了三个动作:首先它会向堆申请内存空间,随后进行转型,最后则是调用构造函数初始化对象

3

delete的作用

首先是调用析构函数,再释放内存空间

4

不同类型对象的存在时间

定义在栈上的对象离开{}定义域就消失,全局对象和静态对象保持到程序运行结束消失,堆上的对象不调用delete就一直存在

 

 类似资料: