调试程序时遇到一点有关问题,请有经验的大侠给点建议

调试程序时遇到一点问题,请有经验的大侠给点建议
程序是对文件进行处理的,对同一个文件,连续处理6次后出现一个莫名的现象:

一下出问题的部分代码:
  int a;
  float b = 10.39;
  a = (int) b; // 前几次处理路过这里时都能顺利赋值,但5次后,每次赋值a都是0,即不能正常赋值

我知道肯定是代码其它地方的内存问题才导致了这里的奇怪现象,我尝试了很多方法企图查处原因但都无法找到
所以期望有经验的大侠能够给出一些定位这样问题方法
或者给出一些良好的建议来追查到问题本质,非常感谢!!

------解决方案--------------------
int a; 
float b = 10.39; 
a = (int) b; // 前几次处理路过这里时都能顺利赋值,但5次后,每次赋值a都是0,即不能正常赋值
================
此时,b为0么. 可能是其他代码越界操作.
------解决方案--------------------
你这个a=0是怎么观察到的?通过debug的watch窗口观察到的?
试试每次都把a的地址打出来,看看是不是一样。

------解决方案--------------------
程序是对文件进行处理的,对同一个文件,连续处理6次后出现一个莫名的现象:
---------------------------
我觉得还可能是处理文件的时候出了问题。仔细检查一下文件操作的代码,确保

其没有问题
------解决方案--------------------
如果lz是在VS2005之类的环境下,就可以设置数据断点。从lz的描述来看,应该是在运行过该行代码5次以后,b的值被非法改变了。所以,可以在该行代码处设断点,在断了5次以后,添加数据断点(需要b的地址值),在变量b的值发生改变的时候断下来,就可以定位哪里的代码非法篡改了b的值。

------解决方案--------------------
你这个问题比较歧义
int a; 
float b = 10.39;
到底是取整数部分,还是要四舍五入,不清楚
因此你应该确定到底是取整数部分还是四舍五入
------解决方案--------------------
你这个问题比较歧义
int a; 
float b = 10.39;
到底是取整数部分,还是要四舍五入,不清楚
因此你应该确定到底是取整数部分还是四舍五入
------解决方案--------------------
给的可以用的信息太少了, 很难帮到你, blue_zyb 说的是一个办法。 VC都可以监视内存改变设置断点。 估计也只能这样了.
------解决方案--------------------
真的假的,你直接写个循环,就搞这个函数,搞10000000次,我就不信了
------解决方案--------------------
问题肯定出在b上,设置断点即可查出错误.
------解决方案--------------------
堆栈崩溃不知道会不会产生这种问题, 如果实在找不到原因,你只能加堆栈保护,监视一下是否有堆栈崩溃发生。
------解决方案--------------------
可以用Numega的BoundChecker之类的工具检查程序是否越界
------解决方案--------------------
问题是lz的两行代码在一起 就是程序其他地方地址越界操作 也不应该出现lz所说的啊
估计lz没有找到真正的错误地点