發生在析夠函數中, 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); 并且報錯了.