锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源社区 / C++常见异常解决过程、gmtime异常解决过程

服务方向

人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发

联系方式

固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品原创,禁止转载和任何形式的非法内容使用,违者必究。点名“简易百科”和“闲暇巴”盗用锐英源原创内容。


C++常见异常解决过程、gmtime异常解决过程

最近遇到gmtime时间解析异常错误,经过查找,问题解决,现把异常解决过程分离下。

执行的代码行是:

tmTme = *gmtime(  &ttCurTme );

ttCurTme是time_t类型,tmTme是 struct tm类型,tm类型能够获取时间的年月日时分秒,而time_t是个整数类型,两种时间各有用处,也可以按照约定转换,但是解析异常了,在Debug模式下弹出了异常提示窗口。

在监视窗口里看到ttCurTme的值是0xffffffff7c526e01,开头是0xf,肯定是负值,负值进行转换肯定是异常。

就查找负值的来源,因为代码跨了模块,查找有点麻烦,这个时间值在这里相当于消费者,要找生产者地方。

查找函数名和变量名,找到时间对象的初始化位置是在读取文件后转换文件内容时初始化,在初始化地方设置断点,发现用了中文来转成整数对时间进行初始化,中文肯定不是正规数字,转换后肯定会是个错误的时间数值,用错误的时间数值来进行tmtime肯定有问题。

变量名定义的有意义,能清晰区分,能帮助异常解决。

初学者经常接触的例子是函数局部内赋值和转换,通常不会有错误,在跨模块代码情况下,遇到错误就不好解决,这个过程请大家记好。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内