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:

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;
}
Is there any method within Visual Studio 2003, or MFC classes that would allow me to check for COM resource leaks?

Thanks