clock()返回负值?

时间:2011-12-23 03:58:24

标签: c++ function clock

我创建了一个服务器程序,并且在函数'clock()'返回负值(并使服务器崩溃)时发生了两次错误。在Windows 32位VPS上,当程序运行超过100小时时,都会发生这种情况。

这是我在main.cpp中设置的设置(适当时剪切):

while (1) {
    Sleep(STEP);

            //execute main code like connection handling, AI, etc.

    //check for clock error
    if (clock() < 0) {
        //error saved here

                //close server
        return 0;
    }
}

就是这样,非常简单。 clock()在程序的其余部分中被广泛使用,所以当它像这样的故障时会引起很多问题。

我想知道,为什么它会返回一个负值,我该如何修复呢?

感谢。

1 个答案:

答案 0 :(得分:4)

根据Microsoft's documentation,如果“经过的时间不可用”,它可以返回-1。不幸的是,他们没有解释时间如何不可用。

clock_t的定义是long,它是一个32位有符号值 - 它可以在溢出之前保持2 ** 31。 CLOCKS_PER_SECOND的值为1000,所以596小时应该是好的。