100分求助:VC6下两个double相减得出-1.#IND000000000原因分析

GreenIce0229 2010-04-21 11:48:34
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.#IND000000000

time_t nSumTime = (time_t)((dEndTime - dBeginTime) * 1000.0);
//执行结果发现nSumTime == 0;

请帮助分析引起该情况的各种可能原因。多谢

另注:这段代码是在一个单独的线程中执行,当该线程调用某一个静态Lib中的Function时必定出现这种情况,而在调用其它静态Lib中的Function中却其它正常,始终不会出现这种情况。
...全文
244 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
GreenIce0229 2010-04-22
  • 打赏
  • 举报
回复
问题已解决。

感谢各位热心帮助。

问题的确在这个Lib里面使用了汇编,修改了寄存器状态所致

再次感谢
GreenIce0229 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jason176374 的回复:]
相减的两个数中至少有一个没有初始化或者这个数本身就是越界的。
比如除零等都会产生这样的内存。

LZ可以从再上面一点开始调试,甚至m_pCurImageList->m_dBeginTime
这里看看m_dBeginTime的内容是否正确。

跟踪看看哪里把数据搞错了。
[/Quote]

曾做过这样的实验,
double dBeginTime = 1271819811.9210
//执行通过
double dEndTime = 1271819814.3280;
//执行通过

但是到了double dSpanTime = (dEndTime - dBeginTime) / nNum;
仍然出现同样的错误

郁闷。而且只有在线程调用这个特定的Lib中的函数时才会出现
jason176374 2010-04-21
  • 打赏
  • 举报
回复
相减的两个数中至少有一个没有初始化或者这个数本身就是越界的。
比如除零等都会产生这样的内存。

LZ可以从再上面一点开始调试,甚至m_pCurImageList->m_dBeginTime
这里看看m_dBeginTime的内容是否正确。

跟踪看看哪里把数据搞错了。
GreenIce0229 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 aa3000 的回复:]
堆栈被破坏
[/Quote]


谢谢。麻烦您详细说明?
aa3000 2010-04-21
  • 打赏
  • 举报
回复
堆栈被破坏
liumenghappy 2010-04-21
  • 打赏
  • 举报
回复
代码没什么问题,错误在其他地方
wade_2003 2010-04-21
  • 打赏
  • 举报
回复
学习..........
用户 昵称 2010-04-21
  • 打赏
  • 举报
回复
这个数表示无穷大
GreenIce0229 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yincheng01 的回复:]
堆栈被破坏,调用的Lib中存在某些问题,你的代码是正确的
[/Quote]

谢谢

我也怀疑是Lib中存在问题,但是不知道何种原因能引起这种问题,没办法给Lib提出建议,不知道大家是否有好的经验?
cdsnpeter 2010-04-21
  • 打赏
  • 举报
回复
看看此线程是否刷新了UI。如果是工作者线程刷新UI,容易出一些莫名的错误。
尹成 2010-04-21
  • 打赏
  • 举报
回复
堆栈被破坏,调用的Lib中存在某些问题,你的代码是正确的
oyljerry 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 greenice0229 的回复:]
我曾经怀疑是不是调用的Lib中存在某些问题引起。因为同一份代码,调用别的库里面的函数就不从来没有出现过这种现象
[/Quote]
不掉用那个对应的函数是否就没问题...
检查那个函数调用是否有问题
jyh_baoding 2010-04-21
  • 打赏
  • 举报
回复
应该是内存没有初始化
GreenIce0229 2010-04-21
  • 打赏
  • 举报
回复
我曾经怀疑是不是调用的Lib中存在某些问题引起。因为同一份代码,调用别的库里面的函数就不从来没有出现过这种现象
康斯坦汀 2010-04-21
  • 打赏
  • 举报
回复
单纯看代码没问题,肯定是别的地方出错了。

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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