qt学习笔记——全局变量报错切换窗口时回收内存

Posted tear-tear-tear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt学习笔记——全局变量报错切换窗口时回收内存相关的知识,希望对你有一定的参考价值。

  • 全局变量定义时报错:重复定义

 

 

   解决方法:

  1.不把全局变量定义现在头文件里;

  2.用static修饰,代表只能在这个文件使用

static int a;

 

  • 切换窗口时回收内存

  在构造函数中使用语句

this->setAttribute(Qt::WA_DeleteOnClose);//在接收到close时回收内存

  另外注意用new申请空间才适合用这个,如果是直接定义则会连主窗口一起回收,程序报错

  用new的情况,用close后正常:

private:
    Widget2 *w2;//创建一个新的widget
Widget2::Widget2(QWidget *parent) : QWidget(parent)
{
    this->setAttribute(Qt::WA_DeleteOnClose);//在接收到close时回收内存
}
    w2 = new Widget2;//被回收的只是这一块内存
    connect(w2, &Widget2::sent_back2main, this, &Widget::w2_back2main);
    w2->show();
    this->hide();

      直接定义新widget的情况,用close后报错:

private:
    Widget2 w2;//创建一个新的widget
Widget2::Widget2(QWidget *parent) : QWidget(parent)
{
    this->setAttribute(Qt::WA_DeleteOnClose);//在接收到close时回收内存
}
    connect(&w2, &Widget2::sent_back2main, this, &Widget::w2_back2main);
    w2.show();
    this->hide();

 

以上是关于qt学习笔记——全局变量报错切换窗口时回收内存的主要内容,如果未能解决你的问题,请参考以下文章

变量作用域和内存问题--笔记7

1内存分区模型

5.3 Static

黑马视频笔记:C++程序的内存模型

垃圾回收机制

QT如何设置可变的全局变量