c++--候捷视频学习(三)堆、栈与内存管理

ctor:构造函数
在这里插入图片描述

上图中,函数结束时c1占用的栈的内存自动释放,但是p占用的堆的内存要手动释放。
堆的生命周期就在函数内,结束的时候析构函数被调用(说明析构函数是用来清理的)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

new可以分解为三个动作:开内存;转型;调用构造函数。
在这里插入图片描述
deleta可以分解为两个动作:调用析构函数;释放内存。

内存管理

在这里插入图片描述
例如:上图中第一个:在vc编译器下,debug模式下动态new一个complex类型(2个double)的内存,实际开辟多大的,如图第一列。2个double是8个字节;前边带8个灰色框,后边带一个灰色框,每个灰色框是4个字节;最后再带两个红色框,一个红色框是4个字节。所以总共开辟了52个字节,又因为vc编译器开内存是16的倍数,所以最后总共开辟64个字节的内存。
上图中第二个是非debug模式下,开16个字节的内存。
上图第3个是debug模式下,开辟一个string(4个字节),共开辟48个字节内存。
上图中第4个是非debug模式下,开辟一个string(4个字节),共开辟16个字节内存。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值