栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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个字节内存。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/867787.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号