发生在析够函数中, vs2010 debug 模式 .
CriticalSection::~CriticalSection(void){
DeleteCriticalSection(&m_CritSect);
}
我开始推测,必须退出section才能delete ?
InitializeCriticalSection(&m_CritSect);
EnterCriticalSection(&m_CritSect);
DeleteCriticalSection(&m_CritSect);
实际上这样退出是可以的.
问题在哪里?
一个回调处理函数类注册到另外一个线程里面.另外一个线程一直有消息推送或者调用其内部函数.
~主类(){
aa->release(); //之前没有这句话 ,内部aa 线程一直在运行 ,可能是排在析构 (DeleteCriticalSection)之后或者之前,损坏了这个变量 m_CritSect
}
这里开始调用 DeleteCriticalSection(&m_CritSect); 并且报错了.