VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 827|回复: 0

SYC老大,请你指点一下

[复制链接]
50_avatar_middle
最佳答案
0 
在线会员 发表于 2015-12-19 19:37:04 | 显示全部楼层 |阅读模式
3驿站币
IOCP:
一:投递
cnewuinfo=(CUserInfo*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(sizeof(CUserInfo)));
comsokhle=CreateIoCompletionPort((HANDLE)cClientSKT,m_hCompletionPort,(ULONG_PTR)cnewuinfo,0);
bRet = m_wsaapi.AcceptEx(cListSKT,cClientSKT,m_pOverLap->m_szBuf,0,sizeof(sockaddr_in)+16,sizeof(sockaddr_in)+16,&dwBytesRecv,&m_pOverLap->m_OLap);

二:接收(此处的cuinfo值有问题)
CUserInfo *cuinfo=NULL,
while (TRUE)
                {
                        bIORet = GetQueuedCompletionStatus(pThis->m_hCompletionPort, &dwTrans, (PULONG_PTR)&cuinfo, (LPOVERLAPPED *)&pOverLaps, INFINITE);
                        if (!bIORet)
                        {//此是检查到SOCKET断开了        注意,此处可能是线程池结束该线程,造成cuinfo值为野指针
                                if(cuinfo!=NULL)
                                {
。。。。。。。。。。。。。。。。。。。

IOCP可能开几天都没天,但偶尔就会遇到 bIORet =false时,cuinfo为野指针,pOverLaps的值是正常的,

当bIORet =false时,我要回断开socket回收:cuinfo,pOverLaps,
pOverLaps的值正常,回收没问题,但cuinfo偶尔是野指针,求指点,为什么会这样





上一篇:关于SendMessageTimeout 未通知到其它进程的问题
下一篇:求大神指点读取XML文件
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-10-23 15:46

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表