全局变量的坑

昨天晚上测试那边给我报来一个bug,说是工具按了Cancel之后,再重新进入准备阶段,接着重新使用时就会有异常错误出现。

当我听到这个问题的时候,我开始时拒绝的,因为这种问题测试老是乱报,一开始我也不信会有什么问题。

后来自己拿了个机器试了一下,果真复现了。 这尼玛。。。

今天上午+下午到现在一直在调查这个问题,终于发现了是全局变量的坑,关键是这个全局变量还不得不用。

具体原因:

我们有个指针叫m_pCBS,当用户点击Cancel之后,我们会做一个Free的操作。但是我们在别处使用时,并未检查m_pCBS指针是否为空,Cancel之后指针的值为空,然后再使用指针时必然会有问题。

解决方法:

在使用m_pCBS指针是,先检查指针是否为空,非空则继续使用,为空则重新创建m_pCBS。

教训:

使用指针时,一定要检查当前指针是否为空。

时间: 2024-10-10 16:54:50

全局变量的坑的相关文章

初始JavaScript中的模块

模块 模块可以提供一个接口,并且隐藏其中的状态与实现的的函数或者对象,利用模块我们可以完全屏蔽全局变量的使用(全局变量太坑了,55555) 一个小例子 Function.prototype.method = function(name,func){ this.prototype[name] = func; return this; } String.method("def",function(){ var ent = { quot:'""', lt:'<',

全局变量遇到的坑

这种情况结果一样 var aname="The Window"; console.log(aname);//The Window console.log(window.aname)//The Window 但是写在$(function(){........})中结果不等 $(function(){ var aname="The Window"; console.log(aname);//The Window console.log(window.aname)//un

Javascript之全局变量和局部变量部分讲解

以此文作为自己学习的一个总结. 关于全局变量和局部变量的一句简单的定义:在函数外声明的变量都为全局变量,在函数内声明的为局部变量. 一.局部变量和全局变量重名会覆盖全局变量 1 var a = 1; 2 function test1() { 3 var a = 2; 4 alert(a); 5 } 6 test1();// 2 这里的函数中的定义的a是局部变量,它的作用域为函数{}之间,函数外定义的a为全局变量,它的作用域为整个程序(描述有点不准确).在函数中的局部变量和全局变量重名,局部变量会

Python开发过程中17个坑

一.不要使用可变对象作为函数默认值 复制代码代码如下: In [1]: def append_to_list(value, def_list=[]):   ...:         def_list.append(value)   ...:         return def_list   ...: In [2]: my_list = append_to_list(1) In [3]: my_listOut[3]: [1] In [4]: my_other_list = append_to_l

一名Android开发者的微信小程序填坑之路(1)

前言 首先要声明的是,我是一名 Android 开发者,之前基本没有前端开发经验,甚至连 JS ,HTML 都是为了开发小程序现学的一些皮毛--所以文章中所提到的一些点也许在资深前端开发者看来只是小case,但是站在一个 Android 开发者的角度来看确实是大坑. 前面就不说太多东西了,文章的末尾再谈谈我对小程序的一些看法--这篇文章主要是谈谈在开发小程序的过程中遇到的一些坑. PS:推荐一下我写的一个微信小程序版的Gank客户端:wechat-weapp-gank 正文 1,获取小程序开发工

KDT的坑...

诶最近开坑好频繁啊...感觉没救了TAT 写了几道模板题..... 建树 比如现在有一些二维平面上的点,我们按照维度首先进行一次划分: 比如第一次划分x维,那么我们找到所有点中x坐标为中位数的点,将其作为根,x坐标小于中位数的点划分到左子树,否则划分到右子树.然后递归划分剩余的两侧的点.下一次划分依据为y维,再下一次划分依据为x维.以此类推. 每个节点存储的信息包含为以这个点为根的子树所有的点的矩形的左上角和右下角的坐标.我们在划分结束时更新即可. 那么我们如何查询到一个给定坐标(x,y)曼哈顿

【转载】Fragment 全解析(1):那些年踩过的坑

http://www.jianshu.com/p/d9143a92ad94 Fragment系列文章:1.Fragment全解析系列(一):那些年踩过的坑2.Fragment全解析系列(二):正确的使用姿势3.Fragment之我的解决方案:Fragmentation 本篇主要介绍一些最常见的Fragment的坑以及官方Fragment库的那些自身的BUG,这些BUG在你深度使用时会遇到,比如Fragment嵌套时或者单Activity+多Fragment架构时遇到的坑.如果想看较为实用的技巧,

被swoole坑哭的PHP程序员

本文主要记录一下学习swoole的过程.填过的坑以及swoole究竟有多么强大! 首先说一下对swoole的理解:披着PHP外衣的C程序.很多PHPer朋友看到swoole提供的强大功能.外界对其的崇拜便跃跃欲试的安装.调试其demo.编写新功能,然后兴奋的奔走相告.没过几天当你按照自己的理解继续用swoole时,发现代码并没有按照自己的预期运行,然后开始破口大骂,什么破东西呀,代码跟demo基本一样,为啥运行不通呢?什么狗屁work.task.共享内存.ipcs.异步,各种问题涌现,然后迅速去

C语言全局变量那些事儿(深入C中最隐秘的地带)

[虽然自认为对C的角角落落都有所了解,但直到看到这篇文章,才知道C中的一些隐秘的坑,是自己之前不知道的. 关于全局变量的链接问题,之前在我博客的某文章中有介绍过,一般对C有些了解的程序员都知道这个问题,但本文最后所提到的使用动态链接库所出现的问题,着实让我震惊. (心急的朋友,可跳过前面的,直接读"第4个例子") 所以,以后大家在使用全局变量的时候要留点心,良好的命名规范,在一定程度上可以避免文中所提到的隐秘Bug. 文章略长,请大家耐心读完,一定会有收获的! ] 以下为转载内容(额,