缓冲区益出的问题,求救

superliyubo 2007-04-19 11:38:46
try
{
recvPacket >> BuiltNumberClient; //程序会crash 在这一句.
recvPacket >> unk2;
recvPacket >> account;
recvPacket >> clientSeed;
recvPacket.read(digest, 20);
}
catch(ByteBuffer::error &)
{
sLog.outError("WorldSocket::_HandleAuthSession Get Incomplete packet");
return;
}
重载符号 >> 从读取recvPacket 中读int32 值. 但是 recvpacket 中_storage 却只有 2个字节 int16.
其实就是大小不匹配. 但是这里的try 语句却似乎没起作用. catch 并没有执行 而程序直接挂掉

如何解决这个问题 请指点!
...全文
312 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞哥 2007-04-20
  • 打赏
  • 举报
回复
你捕捉的异常不是程序抛出的异常,使用 "..."
捕捉所有异常
jixingzhong 2007-04-20
  • 打赏
  • 举报
回复
http://www.stcore.com/desktop/2006-08-03/1154573487d83195.html
jixingzhong 2007-04-20
  • 打赏
  • 举报
回复
另外,
异常和错误不是一回事 .......
jixingzhong 2007-04-20
  • 打赏
  • 举报
回复
加一个 catch(...)
yutaooo 2007-04-19
  • 打赏
  • 举报
回复
先来个这个, 给成如下:
catch(ByteBuffer::error &)
{
sLog.outError("WorldSocket::_HandleAuthSession Get Incomplete packet");
return;
}
catch(...) {
slog.outError("unknown error");
return;
}

然后看情况再说.
wangzhangyong411 2007-04-19
  • 打赏
  • 举报
回复
强烈建议别用这些读数据的时候不限制大小的函数 像以前的get函数一样,没限制大小

这样很容易函数调用的返回地址被覆盖 相当的有隐患呀

SF




65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧