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

C++内存管理7 array new

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

C++内存管理7 array new

class Complex{
    public:
        int i;
        int j;
        Complex(){}
        Complex(int i,int j):i(i),j(j){cout<<"i:"<cout<<"free"<
	//调用3次默认无参构造函数
	//无法由参数给与初值
    Complex* pca= new Complex[3];
    delete[] pca;//调用3次析构函数
    return 0;
}


cookie里面记录整块的长度,因为是malloc分配的,必须要free释放。

没有delete[]只有delete时只会free str1或者str3。3块只释放1块。
造成内存泄漏。

class A{
    public:
        int id;
        A():id(0){cout<<"default ctor.this="<int* pi=new int[10];
delete pi;

对于整数来说无所谓,没有析构函数,加不加[]无所谓。

看见3(Demo的长度)知道要调用3次析构函数。
计算方法:
一个Demo对象3个整数12个字节,3个Demo对象是36个字节。加上整数3是36+4=40字节。浅黄色上面是32个字节,no man land是4个字节,再加上上下两个cookie 42=8个字节,然后要调整到16的倍数。现在是123+4+32+4+4*2=84->96补12个字节的PAD。96是60h,为什么是61h后面讲。

以上来自侯捷老师视频仅用于学习。

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

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

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