VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 671|回复: 0

[求助] SYC老大,请你指点一下

[复制链接]
50_avatar_middle
在线会员 发表于 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

本版积分规则

关闭

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

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

GMT+8, 2019-8-19 00:23

Powered by Discuz! X3.4

© 2009-2019 cctry.com

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