我创建了一个服务器程序,并且在函数'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()在程序的其余部分中被广泛使用,所以当它像这样的故障时会引起很多问题。
我想知道,为什么它会返回一个负值,我该如何修复呢?
感谢。
答案 0 :(得分:4)
根据Microsoft's documentation,如果“经过的时间不可用”,它可以返回-1。不幸的是,他们没有解释时间如何不可用。
clock_t
的定义是long
,它是一个32位有符号值 - 它可以在溢出之前保持2 ** 31。 CLOCKS_PER_SECOND
的值为1000,所以596小时应该是好的。