CRITICAL_SECTION m_CriticalSection;
它需要初始化的,不知道在使用之前有没有在哪个函数中对它做初始化的处理
它需要初始化的,不知道在使用之前有没有在哪个函数中对它做初始化的处理
解决方案 »
- 问一个很菜的问题,strncmp和_tcsncmp
- 请教MFC中shell管理器的用法?(感觉是变量调用问题,高手进来帮帮忙啊)
- 请教一个 不规则波形中的最大值得算法
- 如何向vc6.0中添加不在system32之中的.dll文件?
- 如果 想在 SDI 程序里增加一个 窗口框架应该怎么做?
- 如何把网口虚拟成串口?
- 怎么用WTL做一个ACTIVEX或是ATL啊
- 简单问题-怎么判断一个Dialog是SW_HIDE,还是SW_SHOW
- 在ClistCtrl中如何嵌套类似ClistTree的效果,如图
- 哎~还是有问题,画矩形的右键弹出编辑功能
- opencv上的delaunay三角分割,看不懂哎~~
- 关于异步套接字和同步套接字
如果CRITICAL_SECTION m_CriticalSection;定义成全局变量,不初始化都不会出错,在想是不是不能定义成类成员,郁闷
{
InitializeCriticalSection(&m_CriticalSection);
}
CCHThreadControl::~CCHThreadControl()
{
DeleteCriticalSection(&m_CriticalSection);
}
::EnterCriticalSection(&m_FreeContextListLock);
if(m_nFreeContextCount <= m_nMaxFreeContexts) // 添加到空闲列表
{
// 先将关键代码段变量保存到一个临时变量中
CRITICAL_SECTION cstmp = pContext->Lock;
// 将要释放的上下文对象初始化为0
memset(pContext, 0, sizeof(CIOCPContext)); // 再放会关键代码段变量,将要释放的上下文对象添加到空闲列表的表头
pContext->Lock = cstmp;
pContext->pNext = m_pFreeContextList;
m_pFreeContextList = pContext;
// 更新计数
m_nFreeContextCount ++;
}
else
{
->>出错位置 ::DeleteCriticalSection(&pContext->Lock);
::HeapFree(::GetProcessHeap(), 0, pContext);
} ::LeaveCriticalSection(&m_FreeContextListLock);
pContext->Lock调试出来的信息表明该地址与刚释放的pContext->lock相同我就不明白这指针怎么会指向刚被释放的区域去了