new和delete的使用

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就一直存在

 

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值