我参照网络上的代码写的一个UDP IOCP封装,现在发现的问题是在debug模式下好像比较正常,但在release模式下会错误,错误信息为:0x00000010指令引起的0x00000010内存。该内存不能为read。然后测试了网络上能够找到的代码,似乎都存在此问题。 我是在本机测试,使用SocketTool软件作为udp客户端向上面的程序发送大量的udp包,程序即崩溃。在virtual pc中运行SocketTool软件测试也存在同样的问题。
小弟功力不够,几天了都没有找出此bug(可能是release模式下编译器优化或更深层次的原因引起),希望大虾帮我看看程序,救救小弟,指出此代码或设计存在的问题,小弟在此万分感激。同时代码也完全开放,希望对用得着的朋友有所帮助。代码及测试工具下载:
http://file5.brsbox.com/download.php?sid=b8d11526a7754c548bfd5315de018e99&fc=2593c57b450324308d873eef5c571840/%B4%FA%C2%EB%BC%B0%B9%A4%BE%DF.rar
小弟功力不够,几天了都没有找出此bug(可能是release模式下编译器优化或更深层次的原因引起),希望大虾帮我看看程序,救救小弟,指出此代码或设计存在的问题,小弟在此万分感激。同时代码也完全开放,希望对用得着的朋友有所帮助。代码及测试工具下载:
http://file5.brsbox.com/download.php?sid=b8d11526a7754c548bfd5315de018e99&fc=2593c57b450324308d873eef5c571840/%B4%FA%C2%EB%BC%B0%B9%A4%BE%DF.rar
让release输出调试信息
写个crash report,收集错误报告信息,然后用VC来调试这个错误报告文件即可
自己查MiniDumpWriteDump这个API的用法
有时很正常,单机调试,socket收发太快了
连发10W次,128个pContent都用不完
有时就报错在WSASend后栈里pContent被破坏
IssueSendOperate
另外这个pContent栈实现的有点问题建议:
内存池用链表,而不是用栈
非常谢谢stjay,非常谢谢看了我写得比较拙劣的代码。我调试发现也是堆栈被破坏,但就是找不到根源。谢谢你的建议,我把内存池这一块修改一下再测试。为了谢谢大家,再共享另外一个UDP IOCP封装代码,但内存池的实现思想有所区别,我的理解是后面一种吞吐量会受到限制,不知道对不对,还请大虾给小弟指点一下。(测试工具同前)
http://www.brsbox.com/filebox/uploadcomplete/randstr/1942586mwKn17Ds1251YpL583o/fgid/c68749c9f7287bb74be109a9ea7a3063/dirids/
[email protected]