我使用Visual Studio 2012 C ++ Express解决了这段代码的问题:
double clearbuffer(double buffid)
{
CBuffer*buff = (CBuffer*)buffers.item((int)buffid);
if(buff == NULL)return 0;
buff->clear();
return 1;
}
基本上这个函数在我的C ++ Game Server上经常被调用。它用于在向其写入任何新数据之前清除缓冲区(缓冲区用于通过Internet发送数据)。问题是,这个错误是随机发生的。它发生的时间我无法看到它是异常还是什么,因为一旦它出现我必须停止使用键盘快捷键或其他东西进行调试。
但是,在本地人中,我注意到了buffid变量的值:
buffid -------错误读取寄存器值
它的值为“读取寄存器值错误”。是否有可能出现这种情况?我假设这是一次访问违规,但我不确定。
在我停止执行之前,我注意到调试器在此行停止了:
buff->清除();
我无法调试它,因为它很少发生,它导致我的服务器完全停止,因此必须重新启动它,这会中断与其连接的客户端的游戏玩法。
如果我需要提供更多代码,请告诉我,我会快速编辑我的第一篇文章。