Допустим есть код:
unsigned int _stdcall ThreadLoading(void* p)
{
CSomeClass someObject;
_endthreadex(0);
return 0;
}
int main()
{
unsigned int nID;
HANDLE hThread = reinterpret_cast<HANDLE>(_beginthreadex(NULL, 0, &ThreadLoading, NULL, 0, &nID));
::WaitForSingleObject(hThread, INFINITE);
::CloseHandle(hThread);
}
Так вот какая проблема. Когда срабатывает _endthreadex(0), функция ожидания ::WaitForSingleObject(hThread, INFINITE) возвращается и соответсвенно следующей вызывается ::CloseHandle(hThread). В итоге имеем — деструктор объекта someObject не вызывается.
Что я делаю не так
Работаю с MSVC++7.1 и CRT, которая идет с ним же.
2Moderator. Просьба не отсылать в WinAPI или средства разработки.
... << RSDN@Home 1.1.3 beta 1 >>