UPD: Решение найдено прошу удалить Есть многопоточная программа. В силу ее особенностей иногда происходит зависание некоторых потоков. Зависший поток убивается с помощью TerminateThread, но при этом выделенная потоком память не освобождается. Внутри кода потока очистить ее не получится, и висит наглухо. В итоге наступает "out of memory" при длительной работе. Можно ли из основной программы как-нибудь очистить ресурсы потока и убить его? Нашел вариант: Code: void KillThread(HANDLE threadHandle) { SuspendThread(threadHandle); RtlFreeUserThreadStack(GetCurrentProcess(), threadHandle); TerminateThread(threadHandle, 0); CloseHandle(threadHandle); } Вроде и то что надо, но функция RtlFreeUserThreadStack не экспортируется из ntdll.dll в Windows 7. Может кто знает как решить проблему?
Я немного не в тему, но.. Название топика очень порадовало. Тянет на эталонный летний попкорновый боевичок. В msdn на эту тему наверняка что-нибудь должно быть. Или какой-нибудь garbage collector или деструктор на случай смерти потока.