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后面讲。
以上来自侯捷老师视频仅用于学习。



