雅乐网

计算机技术、学习成长

编程 » C/C++ » 程序debug和release运行结果不一致

程序debug和release运行结果不一致

有时候写一个程序,debug的时候没有问题,但是release的程序却运行有问题,而且release的程序又不能调试,要找到错误之处非常麻烦。

其实debug和release模式没有什么本质的区别,只不过是编译选项的不同。默认release不会在程序中加入调试有关的信息,而且会进行一定的优化,比如把什么变量弄成寄存器类型,比如释放不用的内存等。当然编译选项可以自己设置。

雅乐网遇到过这个问题,总结了一些,出现debug和release运行结果不一致的原因大概有这么几个:

1.变量没有初始化

由于debug的时候一般没有初始化的变量编译器也会自动初始化,但是release后就不一定了。虽然有时未初始化变量没有用到,但还是会导致奇怪的问题,这种情况下要检查一下,最好每个变量都手动初始化。

特别要注意的是结构体,例如一个链表,如果有的节点中结构体的某个域没有用到没有赋值,可能也会导致这个问题,可以在结构体内存分配后使用memset将结构体清零。

2. 数组或指针访问越界

一般debug的时候编译器会提供一个对错误较为宽松的条件,数组两边可能有保护区域,而在release模式下越界可能会修改到程序的其他内容。

 

 

如果文章对你有帮助,欢迎点赞或打赏(金额不限)。你的打赏将全部用于支付网站服务器费用和提高网站文章质量,谢谢支持。

版权声明:

本文由 原创,商业转载请联系作者获得授权。
非商业转载请注明作者 雅乐网 ,并附带本文链接:
http://www.yalewoo.com/different_result_between_debug_and_release.html

上一篇:

下一篇:

我要评论

验证码*: 3 + 9 =