一个阻塞式ACCEPT 接收客户连接的线程,一个工作者线成接收数据,
一个数据处理线程,还有一个转门发送数据线程
程序经常在发送线程内的调用内存分配函数HeapAlloc时失败,在该用malloc后能,正常分配内存。
在调用发送WSASend函数时,通过GetLastErro返回值经常为10107?偶尔会成功。
6 个解决方案
#1
HeapAlloc内存分配失败,这个问题找到,
创建线程时,我用的是CreateThread函数启动线程,应该_beginThreadEx。
创建线程时,我用的是CreateThread函数启动线程,应该_beginThreadEx。
#2
http://topic.csdn.net/t/20050203/15/3773506.html
#3
网上能找到的IOCP的代码太多了。
是否用IOCP还得视具体需求而定,不一定用IOCP就合适。
是否用IOCP还得视具体需求而定,不一定用IOCP就合适。
#4
Error lookup 10107 从来不应失败的系统调用失败了。
#5
我的完成端口,创建都用的CreateThread 也没出什么问题
#6
10107的错误,是由内存分配及访问不当引起的.
问题原由:
用HeapAlloc()分配一段大小为1024字节的内存区.而在后面代码中对这段内存区操作,将它看成大小为1050个字节,内存访问越界,而程序没有报错,后面就引起了一系列问题,如:HeapAlloc分配内存失败,WSASend失败等等,很罕见的问题.
问题原由:
用HeapAlloc()分配一段大小为1024字节的内存区.而在后面代码中对这段内存区操作,将它看成大小为1050个字节,内存访问越界,而程序没有报错,后面就引起了一系列问题,如:HeapAlloc分配内存失败,WSASend失败等等,很罕见的问题.
#1
HeapAlloc内存分配失败,这个问题找到,
创建线程时,我用的是CreateThread函数启动线程,应该_beginThreadEx。
创建线程时,我用的是CreateThread函数启动线程,应该_beginThreadEx。
#2
http://topic.csdn.net/t/20050203/15/3773506.html
#3
网上能找到的IOCP的代码太多了。
是否用IOCP还得视具体需求而定,不一定用IOCP就合适。
是否用IOCP还得视具体需求而定,不一定用IOCP就合适。
#4
Error lookup 10107 从来不应失败的系统调用失败了。
#5
我的完成端口,创建都用的CreateThread 也没出什么问题
#6
10107的错误,是由内存分配及访问不当引起的.
问题原由:
用HeapAlloc()分配一段大小为1024字节的内存区.而在后面代码中对这段内存区操作,将它看成大小为1050个字节,内存访问越界,而程序没有报错,后面就引起了一系列问题,如:HeapAlloc分配内存失败,WSASend失败等等,很罕见的问题.
问题原由:
用HeapAlloc()分配一段大小为1024字节的内存区.而在后面代码中对这段内存区操作,将它看成大小为1050个字节,内存访问越界,而程序没有报错,后面就引起了一系列问题,如:HeapAlloc分配内存失败,WSASend失败等等,很罕见的问题.