我已经创建了一个服务器程序,并且发生了两次特定的错误,其中函数'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()在程序的其余部分中被广泛使用,所以当它出现这样的故障时,它会导致很多问题。
我想知道,为什么它返回一个负值,我如何解决它?
谢谢。
发布于 2011-12-23 12:05:34
根据Microsoft's documentation的说法,如果“运行的时间量不可用”,它可以返回-1。不幸的是,他们没有解释为什么时间是不可用的。
clock_t的定义是long,它是一个32位带符号的值-在溢出之前它可以容纳2**31。CLOCKS_PER_SECOND的值是1000,因此它应该有效596小时。
https://stackoverflow.com/questions/8612108
复制相似问题