堆栈开辟及释放
1.在栈上开辟:
{
int a=0;
{
int b=0;
a=1; //正确,还在a的作用域中
}
b=1; //错误,因为不在b的作用域,b已经被销毁了
}
QDialog dialog(this);//栈,所在函数执行完后自动释放
2.在堆上开辟:
QDialog *dialog1 = new Dialog(this);
//在堆上开辟,只有this释放它才释放
//如遇到一直开辟的情况(仅关闭dialog1后再打开dialog1)则可能会导致内存泄漏
dialog1->setAttribute(Qt::WA_DeleteOnClose);//设置属性:关闭当前对话框dialog1并将其从堆区释放