qt 零星笔记
1.qt中堆栈对象的销毁
名字不对,我不知道该取个什么名字,暂且这样吧
在linux c编程中谈到过进程的内存映像,一个进程在内存中的映像如下
代码段存放的是可执行程序的代码,数据段存放的是全局变量,静态变量以及常量,堆栈段中的堆存储的是动态分配的内存,也就是在c语言中用malloc等函数分配的内存空间或者c++中new对象所占有的空间
而堆栈段中的栈在c语言中用于函数调用以及函数内部定义的局部变量。
理解上述概念,我们再来了解一下qt中对象销毁
在qt中有时候我们使用new来产生一个新部件,但是没有使用delete来销毁,通过代码我们知道,当部件在new时如果指定了父窗口,那么他就回添加到父窗口的一个children列表中,当父对象关闭调用完析构函
数时会自动销毁他的children列表中的对象,new出来的对象都是使用的堆内存,都需要使用delete,但是qt的父对象帮主我们delete了,而在main函数中,我们则需要使用
QWidget w;
w.show
这样他才会在栈空间申请内存空间,那么当程序结束的时候他会自动销毁而不用使用delete,这么以来,当我们关闭窗口的时候就销毁了这个对象,并且挂在他下面的所有子部件都会自动销毁,所以也不用我们使用delete了
******************************************************************************************我是分割线******************************************************************************************