Qt [GC9-12]:中途遇到问题解决 析构函数无法释放资源

Qt [GC9-12]:中途遇到问题解决 析构函数无法释放资源

基于Qt的汽车仪表模拟


在我准备开始写HUD的时候,发现一个新的问题。


那就是我开始将我的资源释放都写在了控制台的析构函数中,但是呢,在程序结束的时候却不会释放我的资源,这点搞得我好烦啊,析构函数不就是在程序结束的时候释放资源吗。



那么具体表示就是我在控制台中创建了HUD窗口,并且在控制台的析构函数中实现了对HUD窗口的回收。但是呢,结果却是当我结束控制台程序的时候,HUD窗口并没有随之消失,依旧显示在说面上。代码如下

 
ControlPanel::~ControlPanel()
{ 
    if(timer_Change_Jianwei_Color)
    {
        timer_Change_Jianwei_Color->stop();
        delete timer_Change_Jianwei_Color;
        timer_Change_Jianwei_Color = NULL;
    }
    if(timer_Get_Current_Time)
    {
        timer_Get_Current_Time->stop();
        delete timer_Get_Current_Time;
        timer_Get_Current_Time = NULL;
    }
    if(myHUD)
    {
        myHUD->close();
        delete myHUD;
        myHUD = NULL;
    }
    delete ui;
}

对应的解决方法是啥,其实很很简单,就是我自己写一个资源回收的含,在控制台程序结束的时候先调用我的资源回收,完了吧控制台的关闭函数写在我的资源函数回收里面就好了。代码如下

 
void ControlPanel::my_Close()
{
    if(timer_Change_Jianwei_Color)
    {
        timer_Change_Jianwei_Color->stop();
        delete timer_Change_Jianwei_Color;
        timer_Change_Jianwei_Color = NULL;
    }
    if(timer_Get_Current_Time)
    {
        timer_Get_Current_Time->stop();
        delete timer_Get_Current_Time;
        timer_Get_Current_Time = NULL;
    }
    if(myHUD)
    {
        myHUD->close();
        delete myHUD;
        myHUD = NULL;
    }
    this->close();
}

Qt [GC9-12]:中途遇到问题解决 析构函数无法释放资源

上一篇:变量不同作用域的测试


下一篇:移动端弹出遮罩层时防止底部页面滚动