new、delete、内存分配 的底层原理

new

  • 先调用operator new函数为对象分配空间
  • 然后调用构造函数, 初始化对象 (对象也可能会有申请堆空间)

在这里插入图片描述

delete

  • 先调用对象的析构函数, 是把对象里可能申请的堆空间进行释放
  • 然后再调用operator delete函数释放为对象分配的空间.

在这里插入图片描述

实际分配内存的大小

  • 调试模式会有额外的灰色模块
  • 非调试模式没有额外灰色模块
  • 上下cookies(红色部分)是必要的, 他用来记录一些信息便于之后的回收
  • VC下申请的内存都是16B的倍数, 需要进行alignment
    在这里插入图片描述

array new 搭配 array delete

  • VC下数组会用一个额外变量记录数组长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值