首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

同样代码,release和debug上结果不一样,是VC有关问题吗

2012-11-03 
同样代码,release和debug下结果不一样,是VC问题吗?一个小程序,vista+vc2008环境,debug运行正常,release出

同样代码,release和debug下结果不一样,是VC问题吗?
一个小程序,vista+vc2008环境,debug运行正常,release出错,跟踪到hash_map中的

size_type _Hashval(const key_type& _Keyval) const
{// return hash value, masked and wrapped to current table size
size_type _Num = this->comp(_Keyval) & _Mask;
if (_Maxidx <= _Num)
_Num -= (_Mask >> 1) + 1;
return (_Num);
}

size_type _Num = this->comp(_Keyval) & _Mask;这一行中_Keyval同样传入103,debug版中_Num结果为11万多,release版中_Num结果为4千多,导致数组越界,出错。查过_Mask同样都为13万多。

想不通,是VC问题吗?


[解决办法]
你是怎么追查到两版不一致的了?是通过调试时查看的?那么,其实 release 的话,断点调试你是根本看不到真实值的,也就是说在 release 下,你 watch 到的值都是假的,不值得参考。如果楼主是通过这种方式来追查值的话,那么请使用其它的方法来追查。比如——COUT出来……

热点排行