100分求助:VC6下两个double相减得出-1.#IND000000000原因分析int nNum = 60;
double dBeginTime = m_pCurImageList->m_dBeginTime;//m_pCurImageList->m_dBeginTime==1271819811.9210
//执行通过double dEndTime = m_pCurImageList->m_dEndTime;//m_pCurImageList->m_dEndTime==1271819814.3280;
//执行通过double dSpanTime = (dEndTime - dBeginTime) / nNum;
//执行结果错误,debug发现dSpanTime == -1.#IND000000000time_t nSumTime = (time_t)((dEndTime - dBeginTime) * 1000.0);
//执行结果发现nSumTime == 0;请帮助分析引起该情况的各种可能原因。多谢另注:这段代码是在一个单独的线程中执行,当该线程调用某一个静态Lib中的Function时必定出现这种情况,而在调用其它静态Lib中的Function中却其它正常,始终不会出现这种情况。

解决方案 »

  1.   

    相减的两个数中至少有一个没有初始化或者这个数本身就是越界的。
    比如除零等都会产生这样的内存。LZ可以从再上面一点开始调试,甚至m_pCurImageList->m_dBeginTime
    这里看看m_dBeginTime的内容是否正确。跟踪看看哪里把数据搞错了。
      

  2.   


    曾做过这样的实验,
    double dBeginTime = 1271819811.9210
    //执行通过
    double dEndTime = 1271819814.3280;
    //执行通过但是到了double dSpanTime = (dEndTime - dBeginTime) / nNum;
    仍然出现同样的错误郁闷。而且只有在线程调用这个特定的Lib中的函数时才会出现
      

  3.   

    我曾经怀疑是不是调用的Lib中存在某些问题引起。因为同一份代码,调用别的库里面的函数就不从来没有出现过这种现象
      

  4.   

    堆栈被破坏,调用的Lib中存在某些问题,你的代码是正确的
      

  5.   

    看看此线程是否刷新了UI。如果是工作者线程刷新UI,容易出一些莫名的错误。
      

  6.   


    谢谢我也怀疑是Lib中存在问题,但是不知道何种原因能引起这种问题,没办法给Lib提出建议,不知道大家是否有好的经验?
      

  7.   

    问题已解决。感谢各位热心帮助。问题的确在这个Lib里面使用了汇编,修改了寄存器状态所致再次感谢