关于C++当中全局变量的释放问题

一、由来

主要是在修改公司的一个MFC项目的时候遇到的问题,我在MFC页面的析构函数当中对一个全局图像变量进行了释放,具体如下:

ai_engine_OCR::~ai_engine_OCR()
{
    // 及时释放内存
    if (g_pImg_open != NULL)
    {
        delete g_pImg_open;
        g_pImg_open = NULL;
    }
}

g_pImg_open为全局的图像变量。

等到程序进行测试的时候,发现当图像打开的情况下,进行不同界面的切换时候,导致了程序崩溃和堆栈溢出。

二、主要原因

全局变量的出现就是为了维持变量在整个程序运行过程当中变量的生命周期,如果随意在某个函数当中对全局变量进行释放,会导致当其他页面或者模块对该全局变量进行访问的时候出错,因为此时该全局变量已经被释放了,无法再次被调用。也就出现了上述的问题。


对于局部函数对于全局变量的释放,这种操作真的很蠢啊。不要啊~~~ 🐖🐖🐖🐖

posted @ 2024-10-12 11:31  笑眯眯办大事  阅读(20)  评论(0编辑  收藏  举报