同样代码,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出来……