[C++基础]关于对象的创建及内存分配

测试:

#include <stdio.h>
#include <QDebug>

class KPoint
{
public:
KPoint(int x, int y){
nx = x;
ny = y;
}

private:
int nx;
int ny;

};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

//Method One
KPoint kp(3,4);
qDebug() << &kp;
qDebug() << sizeof(kp);

//Method Two
KPoint *p = new KPoint(3,4);
qDebug() << p;
delete p;
qDebug() << p;
p = NULL;
qDebug() << p;

return a.exec();
}

输出:

0x3afc28
8
0x66d048
0x66d048
0x0

解释:

0x3afc28 为创建一个栈对象的地址

8 该对象大小,我的理解是一个类的大小仅仅取决于变量的大小,但是具体这个类在内存中是如何布局的?这个也不清楚,有机会研究一下

0x66d048 创建的一个堆对象地址

delete p 清空了0x66d048这个地址的数据

p = null 清空了p这个指针0x66d048

原文地址:https://www.cnblogs.com/hermit/p/3600481.html