- C/C++ code
class myDialog: public QDialog{public: myDialog(); ~myDialog();private: QDirModel *m_pDirModel;};myDialog::myDialog(){ ui.setupUi(this); m_pDirModel = new QDirModel( this ); ui.m_pTree->setModel( m_pDirModel );//ui是对话框资源,m_pTree是一个QTreeView}myDialog::~myDialog(){ if (m_pDirModel) delete m_pDirModel;}
我想我的代码没什么问题吧,可是每次打开对话框,然后关闭,内存就会比打开前多一点,不断打开关闭,内存会不断上升,不知道哪儿泄漏了,请各位赐教!
------解决方案--------------------
指针被delete之后,按道理说,它所指向的空间已经被释放.但实际上操作系统出于效率和管理的考虑,内存空间是按照4KB大小分配的,你分配的4B大小的整数常常和别的变量空间在一个4KB页内,只有全都释放的情况下,才可能真正释放。