首页 > 编程语言 >关于C++当中全局变量的释放问题

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

时间:2024-10-12 11:21:38浏览次数:8  
标签:释放 变量 C++ pImg 当中 全局变量 open

一、由来

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

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

g_pImg_open为全局的图像变量。

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

二、主要原因

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

标签:释放,变量,C++,pImg,当中,全局变量,open
From: https://www.cnblogs.com/Vsonic12138/p/18460185

相关文章

  • c++设置windons默认输出音频设备
    c++设置windons默认输出音频设备主要功能是控制默认输出的音频设备进行切换。本文主要教导如何使用c++进行控制代码示例#include<windows.h>#include<mmdeviceapi.h>#include<iostream>#include<functiondiscoverykeys_devpkey.h>#include<vector>#include"......
  • C++指针的基本使用
    目录一、定义和使用二、指针占用的空间三、空指针和野指针1、空指针2、野指针四、const修饰指针五、指针和数组六、指针和函数七、结构体指针一、定义和使用指针变量定义语法:数据类型*变量名;intmain(){ //1、指针的定义 inta=10;//定义整型变量a ......
  • 南沙C++信奥赛陈老师解一本通题 1939:【07NOIP普及组】纪念品分组
    ​ 【题目描述】元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完......
  • 蓝桥杯真题 穿越时空之门(第十五届蓝桥杯省赛PythonB组A题) c++题解
    问题如下(附链接):穿越时空之门题解代码如下:#include<iostream>usingnamespacestd;intx1(inti){inta=0;while(i){a+=i%2;i/=2;}returna;}intx2(inti){intb=0;while(i){b+=i%4;i/=4;}returnb;}intmain()......
  • C++ 类(1)
    1.什么是类在C语言中,我们学过结构体,我们可以在结构体里面定义变量在C++中,我们还可以在结构体里面定义函数structAdd{inta;charb;doublec;int&cal(inta,intb){a=a+b;returna;}};intmain(void)......
  • 实验1 现代C++编程初体验
    实验1:task.cpp1#include<iostream>2#include<string>3#include<vector>4#include<algorithm>5usingnamespacestd;67template<typenameT>8voidoutput(constT&c);910voidtest1();11voidtest2();......
  • c++游戏——四子棋
    欢迎各位点赞和评论,若有问题,欢迎提出Code#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<ctime>#include<iomanip>#include<termio.h>usingnamespacestd;constintBLACK=1;constintWHI......
  • C++入门教程
    C++入门教程----------------------------------------------------------一.初识C++---------------------------------------------------------1.什么是C++.c++是一种较为基础的编程语言,虽然没有Python,Scratch那么高级,但是它应用范围很广.不论是信息奥赛还是国......
  • C++常用库函数
    大小写转换islower/isupper函数用于检查一个字符是否为小写或大小字母,需要包含头文件<cctype>,也可以包含万能头文件<bits/stdc++.h>.函数返回值类型为bool类型。intmain(){ charch1='A'; charch2='b'; //使用islower函数判断是否为小写字母 if(islower......
  • 【C++】模板进阶
    【C++】模板进阶一.非类型模板参数二.模板的特化函数模板特化函数模板的特化步骤:类模板特化1.全特化2.偏特化(1)部分特化(2)参数更进一步的限制三.模板分离编译1.什么是分离编译2.模板的分离编译3.解决方法四.模板总结一.非类型模板参数模板参数分为:类类......