图示形象化理解:

堆栈都是数据结构存取数据的方式
堆:理解为一个堆积物体,独立的分散的,当需要空间时,再找一个地方。需要的就是new关键字,动态申请一个空间。程序员自己动态分配空间,使用指针操作,不使用时,手动在析构函数里删除指针
动态创建对象

栈:可以理解火车站的站,是通过调度是统一安排停放在哪个位置,占用存储空间,无需自己考虑。程序员无需考虑空间分配问题,无需在析构函数中处理。
静态创建对象
栈的容量较小,一般只有几百KB到几MB的空间
---------------------------------------------------------------------------------------------
内存分配方式:
管理方式:
空间大小:
生长方向:
效率:
应用场景:
举例:
创建一个debug.h的窗口类

栈方式,静态创建对象(没有星号*,不是指针):
debug aa2;
aa2.setModal(true);
aa2.showNormal();//此方式窗口一闪而过
int age=18;
堆方式,动态创建
debug* aa2;
aa2 = new debug(this);
aa2->setModal(true);
aa2->showNormal();
如何限制对象建立在栈上呢?不让静态创建对象
设置析构函数private

调用是提示不可访问

Qt中有内存回收机制, 但是不是所有被new出的对象被自动回收, 满足条件才可以回收
如果想要在Qt中实现内存的自动回收, 需要满足以下两个条件:

参考:https://blog.csdn.net/qq_41701723/article/details/131889164