线程内new对象指针,线程退出后,进程delete出错.
部分主要代码
CRITICAL_SECTION g_Lock;
class A
{
...
}
std::vector<A *> g_A;
//线程中new
DWORD WINAPI Thread(LPVOID lParam)
{
EnterCriticalSection(&g_Lock);
A *pA = new A;
g_A.push_back(pA);
LeaveCriticalSection(&g_Lock);
}
//线程退出
//进程delete
void CleanA()
{
EnterCriticalSection(&g_Lock);
std::vector <A *>::iterator IterA;
for (IterA = g_A.begin(); IterA != g_A.end( ); IterA++)
{
if ( *IterA != NULL )
{
delete *IterA; //单步跟踪,执行完这句也不报错,直接飞了.
}
}
g_A.clear();
LeaveCriticalSection(&g_Lock);
}
for (IterA = g_A.begin(); IterA != g_A.end();)
{
if (pA == *IterA)
{
IterA = g_A.erase(IterA);
delete pA;
break;
}
else
IterA++;
}