为什么DEBUG版本正确,Release版本错误?

ocean1004 2008-09-12 01:39:36
是一个自己写的数据排序,在验证的时候,debug下验证通过, release下验证错误。

查了下网上一些资料,说可能内存没正确处理,检查了下自己的程序,没发现内存问题。
除了内存问题之外,还可能有其他问题吗?


宏定义好像也没问题。

代码量挺大,贴不上来。
还有什么可能的情况?望高手帮帮忙
...全文
1402 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuwanglove 2008-09-14
  • 打赏
  • 举报
回复
函数参数传递
zhuwanglove 2008-09-14
  • 打赏
  • 举报
回复
1楼很全了,以前也出现过这种情况,release下也可以调试的,先调试一下,重点注意函数传递是否正确,学习了.
xiaobukuai 2008-09-13
  • 打赏
  • 举报
回复
debug版本和release版本的区别,学习了
野男孩 2008-09-13
  • 打赏
  • 举报
回复
en,运行库提供的内存调试机制。

[Quote=引用 16 楼 kkk215215 的回复:]
我以前也遇到过这种情况~
我是因为内存没有申请到位,出现的错误。在DEBUG模式下,即使你申请的空间小了,但DEBUG会自动将你补齐。但RELEASE模式就是严格按照大小来的,一般出现这种问题首先查看内存的申请部分代码,或者在你认为会出错的地方,加上一些AfxMessageBox,还可以在“运行”中打开eventvwr.msc来看看。
[/Quote]
f22fbi 2008-09-12
  • 打赏
  • 举报
回复
mark
双子东宝 2008-09-12
  • 打赏
  • 举报
回复
1楼强,
学习先
kkk215215 2008-09-12
  • 打赏
  • 举报
回复
我以前也遇到过这种情况~
我是因为内存没有申请到位,出现的错误。在DEBUG模式下,即使你申请的空间小了,但DEBUG会自动将你补齐。但RELEASE模式就是严格按照大小来的,一般出现这种问题首先查看内存的申请部分代码,或者在你认为会出错的地方,加上一些AfxMessageBox,还可以在“运行”中打开eventvwr.msc来看看。
aayy 2008-09-12
  • 打赏
  • 举报
回复
mark一下
superyys 2008-09-12
  • 打赏
  • 举报
回复
关掉优化,
对可能在线程或中断中被更改的变量用volatile修饰
帅得不敢出门 2008-09-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ocean1004 的回复:]
搞定了。。。。
自己的问题,不过也发现了Release和Debug的不同~~~~~~~~~~
很爽的一件事情~~~~~~~~~~~~~
[/Quote]
什么原因 怎么解决 楼主要讲讲.
ocean1004 2008-09-12
  • 打赏
  • 举报
回复
分不够~~~~~~~~~~
明天加点分再结贴~~~~~~~~~~~~
killercat 2008-09-12
  • 打赏
  • 举报
回复
可能是 release 版本优化的原因。
ocean1004 2008-09-12
  • 打赏
  • 举报
回复
搞定了。。。。
自己的问题,不过也发现了Release和Debug的不同~~~~~~~~~~
很爽的一件事情~~~~~~~~~~~~~
h13077395959 2008-09-12
  • 打赏
  • 举报
回复
回帖是一种美德!

^_^
kingstarer 2008-09-12
  • 打赏
  • 举报
回复
还有一种情况是越界访问造成堆栈错误,在debug下可能没事,但在release下由于寻址方式改变,就会出错
wjkgz 2008-09-12
  • 打赏
  • 举报
回复
1。在debug下一些变量没有初始化默认为0,release下面则没有。
比如 int n; debug下n为0,release下n不为0
int * p; 如果你没有再赋值,
if( p != NULL ),在debug下不成立,在release下就成立了。看看你是否有这样的没有初始化的地方。
2。在release的编译选项里面加上调试信息,调试一下看看哪里出错了。
信念 2008-09-12
  • 打赏
  • 举报
回复
DEBUG版本:程序中每个变量会有多余的空间存放调试信息,这些多余的空间会在RELEASE版的时候收回。
如果程序中在NEW一块内存时不是足够大,但刚好没有超过存放调试信息的大小,那样在DEBUG版运行是没有问题的,但RELEASE时会造成一些未知错误
tengye19840704 2008-09-12
  • 打赏
  • 举报
回复
project - > setting > c/c++ 这里有一些设置...你看好左面..有选择是DEBUG的时候还是RELEASE的时候,看看是不是RELEASE的时候有什么不对的地方...
哦对了..我说的是VC6.0...
K行天下 2008-09-12
  • 打赏
  • 举报
回复
原因很多,百度一下
wudeshou82666 2008-09-12
  • 打赏
  • 举报
回复
楼上很全啊
学习下
加载更多回复(2)

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧