runtime error when setting pointer to interface to NULL
I am getting an error when I try to run the following code when I set the
variable to NULL?
#import "..\Orchestra\Orchestra\Debug\Orchestra.dll"
using namespace OrchestraLib;
DWORD WINAPI ThreadFunction(LPVOID lpvParameter);
int _tmain(int argc, _TCHAR* argv[])
{
::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
IClarinetPtr spIClarinet;
spIClarinet.CreateInstance(__uuidof(Clarinet));
spIClarinet->Sound(1000, 1000);
spIClarinet->Release();
spIClarinet = NULL;
The error happens in comip.h at the point below:
template<> _com_ptr_t& operator=(Interface* pInterface) throw()
{
if (m_pInterface != pInterface) {
Interface* pOldInterface = m_pInterface;
m_pInterface = pInterface;
_AddRef();
if (pOldInterface != NULL) {
pOldInterface->Release();
<---------------------------------------------------||||||||||||
}
}
return *this;
}
The error happens when I debug the code. It's a runtime error. Here's the
message it gives me:
Unhandled exception at 0x00412076 in Test.exe: 0xC0000005: Access violation
reading location 0xfeeefef6.
If anyone could tell me anything, I would really appreciate it. The .dll
file is one that I created with ATL 8. I use VS2008.
Daniel