您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

都是变量未初始化惹的祸!

时间:2020-07-30 12:14:08  来源:  作者:

最近排查软件的一个问题,百思不得其解,最后查下来竟然是一个变量没有初始化引起的!

都是变量未初始化惹的祸!

1、问题排查过程

最近在按照新需求,开发新功能,在调试某个功能时,出现一个诡异的现象。在运行通过release安装包安装的exe版本,始终是有问题的,但是直接在VS2017中进行release版本调试,发现功能居然是正常的!

同样都是release版本,底层库都是一样的,两个版本表现居然截然不同,这太奇怪了!百思不得其解!

于是继续排查,想到这个问题在之前稳定版本是没有的,应该是最近开发新功能引起的,于是使用svn查看了最近的代码提交记录,找到相关代码模块仔细排查,结果发现是一个BOOL变量影响了代码的控制逻辑。在程序运行的开始阶段,该变量应该是FALSE的,出问题的版本居然走到该控制变量为TRUE的分支中,导致代码的控制逻辑出了问题,所以导致上述问题!

在变量没有初始化时,很多编译器在debug下会自动初始化,但在release下不会自动初始化。release下变量如果没有初始化,变量的值将会是一个随机值,是给该变量分配的内存时内存中的值,所以会是随机值,一旦出现了随机值,程序运行时会出现不可预知的结果。

本例中,直接运行安装包安装的exe版本与release调试运行,该控制变量会得到随机值,所以导致两种情况下的不同表现!

另外,有点迷惑人的地方是,几乎每次直接运行安装包安装的exe版本时,该BOOL变量的随机值都是TRUE,但在release下调试运行时该变量的值一直是FALSE,这也许和两种情况的启动运行机制差异有关系吧!反正是变量没有初始化引起的!

2、总结

以前我们在开发团队中一再强调变量要初始化,但还是有人说,变量不需要一上来就初始化,只要控制好自己的代码逻辑就好了,我表示很不赞同!只有经历过问题的人,才会有深刻体会吧!



Tags:变量   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
函数参数传递指针变量在函数的定义中,函数的参数可以是各种变量,就包括指针变量。首先,我们来看看一个函数的定义:void func(char* p);该函数的名称叫做func,参数定义为 char* p...【详细内容】
2021-07-09  Tags: 变量  点击:(135)  评论:(0)  加入收藏
历上最全:Python 安装整理 和 全面的配置环境变量为什么写这篇文章:因为我做python的后期,发现大部分人安装pyhon环境变量后,还是会出现环境变量,引起的bug问题,这里为打家...【详细内容】
2021-07-04  Tags: 变量  点击:(133)  评论:(0)  加入收藏
Python简单易学,简单到没有学过任何编程语言的人浏览一下资料,浏览一下示例,就可以编写出可用的程序;这是一种解释式编程语言,它可以直接编写,无需编译,在发现错误后立即进行修改,节...【详细内容】
2021-06-25  Tags: 变量  点击:(135)  评论:(0)  加入收藏
前言由于现在需要部署nginx的docker,希望nginx配置文件里面有关server_name在启动容器前动态修改。 但是由于nginx的配置文件不支持使用环境变量。网上找了好些方案,最终选择...【详细内容】
2021-06-02  Tags: 变量  点击:(134)  评论:(0)  加入收藏
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-widt...【详细内容】
2021-05-27  Tags: 变量  点击:(194)  评论:(0)  加入收藏
Hoisting的定义首先,看看mdn对它的解读:变量提升(Hoisting)被认为是, Javascript中执行上下文 (特别是创建和执行阶段)工作方式的一种认识。在 ECMAScript&reg; 2015 Language Spe...【详细内容】
2021-05-18  Tags: 变量  点击:(183)  评论:(0)  加入收藏
如果你对你 Python 使用的变量类型不是非常清楚的话,你可以使用函数 type 来获得变量的类型。通常如果使用 IDE 的话,IDE 会告诉你的变量类型是什么。考察下面的代码:x = 5y =...【详细内容】
2021-03-08  Tags: 变量  点击:(345)  评论:(0)  加入收藏
最近,我在翻阅两本比较新的 Python 书籍时,发现它们都犯了一个严重的低级错误!这两本书分别是《Python编程:从入门到实践》和《父与子的编程之旅》,它们都是畅销书,都在 2020 年 1...【详细内容】
2021-01-14  Tags: 变量  点击:(264)  评论:(0)  加入收藏
MySQL 8 之前,使用的动态变量不是永久性的,并且在重启后会重置。可在运行时使用 SET 语句更改这些变量,以影响当前实例的操作,但是我们必须手动更新 my.cnf 配置文件以使其持久化。...【详细内容】
2020-11-19  Tags: 变量  点击:(130)  评论:(0)  加入收藏
简介JavaScript 是一种动态类型语言,这意味着解释器在运行时确定变量的类型。实际上,这也允许我们在相同的代码中使用相同的变量来存储不同类型的数据。如果没有文档和一致性,...【详细内容】
2020-10-22  Tags: 变量  点击:(71)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的&emsp;&emsp;程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条