内存管理的主旨就是不需要的对象要及时销毁删除掉,释放掉内存占用,否则造成内存泄漏。
内存泄漏指的是一个对象,已经没用了,在软件中被删除了,但是他还在内存当中存在着。
但是当软件整个被关掉的时候,这些内存都会被释放掉。
当前计算机配置水平,轻微的内存泄漏不会有很大的问题;如果是7*24小时运行的软件,比较需要慎重对待内存泄漏的问题,否则只要大方面没问题,小泄漏也是无伤大雅的。
其他语言的自动内存管理(垃圾回收):其实垃圾回收并不是立即执行的,甚至会当垃圾积累到一定的量才启动清理。
即使是大厂(比如firefox曾经内存泄漏直到几年后才找到问题)也有内存泄漏的问题。
qt内存管理主要注意以下几点:
(1)关闭时自动清理
一个窗口应该在构造函数设置,当他被关闭的时候,让他自动delete:
setAttribute(Qt::WA_DeleteOnClose);// 当关闭时会自动delete
(2)子控件要指定父对象
一个窗口可能会有子控件。虽然明显这些子控件是依附于父窗口而存在的,但是程序并不知道。要将父窗口对象传入子控件,那么当父窗口被销毁的时候,这些子控件也会被销毁并释放内存。
简单的说就是子控件初始化时要把this(比如父窗口是一个QDialog)通过构造函数传入:
QFrame * headFrame = new QFrame(this);