基础知识-new & delete

动态制造对象

new: 动态内存分配,制造一个对象
当我们使用关键字new在堆上动态创建一个对象A时,比如 A* p = new A(),它实际上做了三件事:

  1. 向堆上申请一块内存空间(做够容纳对象A大小的数据)(operator new)
  2. 调用构造函数 (调用A的构造函数(如果A有的话))(placement new)
  3. 返回正确的指针

delete:收回该对象
当我们delete的时候也是如此,比如我们delete p的时候,其行为如下:

  1. 定位到指针p所指向的内存空间,然后根据其类型,调用其自带的析构函数(内置类型不用)
  2. 然后释放其内存空间(将这块内存空间标志为可用,然后还给操作系统)
  3. 将指针标记为无效(指向NULL)

new时先分配空间再初始化

new int;//分配个int的对象的内存
new int[10];//分配十个int内存

delete时先析构再收回空间

delete p; //删除单个
delete[] p; //删除一组,如 int[10]

在这里插入图片描述

int * p = new int[10]; //申请10个int内存给p所指,会把字节数也记录下来

需要用delete[]删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值