向不存在的地址发UDP导致程序异常……

lmxmx 2010-04-20 07:09:01
我有一个UDP程序,分为服务器端和客户端。

首先,让服务器端正常运行,客户端向服务端发送UDP包,无任何问题。

然后,终止服务器端,这时客户端向服务端发送UDP包,会产生如下错误:

=====================================================================

标题:Microsoft Visual C++ Debug Library

红色叉号 Debug Error!

Program: D:\VC2008-Projects\test-UDP\Debug\client.exe

Invalid allocation size: 4294967279 bytes.

=====================================================================

在调试的时候,当发送完成UDP时,不会立即出现问题,

当我单步跟踪后,走到一片汇编代码处,才会出错,代码空间位于 mfc90d.dll

应该不是我自己的代码有问题,难道是因为我向不存在的地址发UDP导致MFC代码有错?

高人快来啊…………谢谢!
...全文
265 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmxmx 2010-04-20
  • 打赏
  • 举报
回复
明天试着用OD跟一下。

虽然VC的调试有源代码,但还是感觉OD顺手……
lmxmx 2010-04-20
  • 打赏
  • 举报
回复
……
确实,虽然现在还没有找到出错点,

但是当我发送不需要服务器端返回的UDP包时(我的UDP重新封装过,有好多种类型),就不会出错。


我在找找看,郁闷……
尹成 2010-04-20
  • 打赏
  • 举报
回复
一定是创建了一个指针为null的接收缓冲区,内存泄露导致,
检查一下指针
an_bachelor 2010-04-20
  • 打赏
  • 举报
回复
应该是你代码的问题 你应该是由什么地方直接拿一个返回值或者特定区域的数值作为大小就new
也不检查 4294967279 -1 FFFFFFFF 这么熟悉的数值 有嫌疑
不用怀疑mfc
blackboycpp 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyljerry 的回复:]

检查客户端发送返回代码时的结果处理等,可以自己设置断点调试...
[/Quote]
正解。 你有可能处理了为null的接收缓冲区。
oyljerry 2010-04-20
  • 打赏
  • 举报
回复
检查客户端发送返回代码时的结果处理等,可以自己设置断点调试...

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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