Привет, Всем!
Как полностью освободить ресурсы после того как COM-объект больше не нужен? В приведенном примере память после завершения работы функции потока не освобождается. Если убрать вызов CoCreateInstance, то все нормально. COM-объект ничего не делает — заготовка сгенерированная CB6. Тестовая программа тоже на CB6.
#include <utilcls.h>
#include <atl\atlbase.h>
#include <process.h>
#include "EmptyCOMObject_TLB.h"
IEmptyCOMClass* pObject;
unsigned __stdcall ThreadFunc(void *apParam)
{
CoInitialize(NULL);
::CoCreateInstance(CLSID_EmptyCOMClass, NULL, CLSCTX_INPROC_SERVER, IID_IEmptyCOMClass, (void**)&pObject);
pObject->Release();
CoUninitialize();
}
int main(int argc, char* argv[])
{
for (int i = 0; i < 100; i++)
{
unsigned nThread;
HANDLE hThread;
hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadFunc, NULL, 0, &nThread);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
}
return 0;
}
... << Rsdn@Home 1.1.4 beta 1 >>