DeleteCriticalSection 出错 can not read ... windows 32 vs2010

DeleteCriticalSection 出错 can not read ... windows 32 vs2010

发生在析够函数中,   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);   并且报错了.

你可能感兴趣的:(DeleteCriticalSection 出错 can not read ... windows 32 vs2010)