clock函数异常

Jokul_Lee 2014-07-30 03:50:36
公司程序发现有bug,这个bug在部分设备上不会出现,但在另一部分设备上可以复现,
请大家帮我分析下.
在一个线程中,使用了time.h中的函数,clock();获取时间,用来做条件.
我查看time.h文件中定义,clock返回值是long型, CLOCKS_PER_SEC是1000.
也就是说clock返回值是自程序启动后的经过的毫秒数.
在线程的while(1)循环中,有sleep(50);sleep(20);sleep(1000);是根据条件来选择的.
问题是,程序启动后大约3秒左右,也就是clock()返回值是30**,clock的返回值突然不正常了,
变成了约从-1161514461(0x453B4DDD)增大的数,当时没有考虑到会发生这样的事情,所以也没有处理.
请问诸位,为什么会发生这种情况呢..
注:在部分机器上(包括我的电脑)上运行都正常.
现在处理的办法是把clock改用了gettickcount()函数
...全文
211 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-08-04
  • 打赏
  • 举报
回复
clock和GetTickCount都不如GetSystemTimeAsFileTime好使。
Saleayas 2014-08-04
  • 打赏
  • 举报
回复
看看什么都不做,仅仅测试 clock 函数。 我怀疑可能存在某些 BUG 破坏了 start_tics 的值。
Jokul_Lee 2014-08-04
  • 打赏
  • 举报
回复
感谢楼上诸位,再顶起来看看
赵4老师 2014-08-01
  • 打赏
  • 举报
回复
FILETIME The FILETIME structure is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601. typedef struct _FILETIME { // ft DWORD dwLowDateTime; DWORD dwHighDateTime; } FILETIME; Members dwLowDateTime Specifies the low-order 32 bits of the file time. dwHighDateTime Specifies the high-order 32 bits of the file time. Remarks It is not recommended that you add and subtract values from the FILETIME structure to obtain relative times. Instead, you should Copy the resulting FILETIME structure to a LARGE_INTEGER structure. Use normal 64-bit arithmetic on the LARGE_INTEGER value. QuickInfo Windows NT: Requires version 3.1 or later. Windows: Requires Windows 95 or later. Windows CE: Requires version 1.0 or later. Header: Declared in winbase.h. See Also Time Overview, Time Structures, CompareFileTime, GetFileTime, LARGE_INTEGER
赵4老师 2014-08-01
  • 打赏
  • 举报
回复
GetSystemTimeAsFileTime
Jokul_Lee 2014-08-01
  • 打赏
  • 举报
回复
顶上来诸位帮忙瞧瞧
Jokul_Lee 2014-07-30
  • 打赏
  • 举报
回复
引用 1 楼 SiGoYi 的回复:
你用于接收clock返回值的变量类型是什么?不会是size不够而导致越界了吧!
我是用long接收的,
SiGoYi 2014-07-30
  • 打赏
  • 举报
回复
你用于接收clock返回值的变量类型是什么?不会是size不够而导致越界了吧!

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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