Hi, I have just put together a very quick console program to illustrate my point. I am doing alot of heavy COM programming, and I need to be able to check for memory leaks. Currently, I have been using the CRT debug heap functions. However, they do not give any memory leaks when I do not release COM resources:
Is there any method within Visual Studio 2003, or MFC classes that would allow me to check for COM resource leaks?Code:#include <iostream> #include <tchar.h> #define _WIN32_WINNT 0x0400 #include <tapi3.h> #include <objbase.h> /*For memory checking*/ #define CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> int _tmain(int argc, _TCHAR* argv[]) { HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); ITTAPI *m_IpTapi = NULL; IEnumAddress *pIEnumAddress = NULL; hr = CoCreateInstance(CLSID_TAPI, NULL, CLSCTX_INPROC_SERVER, IID_ITTAPI, (LPVOID *)&m_IpTapi); if(FAILED(hr)) cout << "Error: " << hr; hr = m_IpTapi->Initialize(); if(FAILED(hr)) cout << "Error: " << hr; hr = m_IpTapi->EnumerateAddresses(&pIEnumAddress); if(FAILED(hr)) cout << "Error: " << hr; /* Here I should do pIEnumAddress->Release(); pIEnumAddress = NULL if(m_IpTapi != NULL) { m_IpTapi->Shutdown(); m_IpTapi->Release(); m_IpTapi = NULL; } Release COM based resources CoUninitialize(); */ _CrtDumpMemoryLeaks(); return 0; }
Thanks



LinkBack URL
About LinkBacks


