我已经创建了一个服务器程序,并且在函数'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()在程序的其余部分中广泛使用,因此,当它像这样发生故障时,会引起很多问题。

我想知道,为什么它返回负值,我该如何解决?

谢谢。

最佳答案

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

clock_t的定义是long,它是一个32位带符号的值-在溢出之前它可以容纳2 ** 31。 CLOCKS_PER_SECOND的值是1000,因此应该可以使用596个小时。

关于c++ - clock()返回负值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8612108/

10-11 22:11