BSTRは::SysFreeString(x); を実行しても直ぐには消えない。
デバッグの時ににこれが厄介になる場合がある。
下の関数を一度実行するとキャッシュを切ることができる。


#ifdef _DEBUG
typedef int (*SETOANOCACHE)(void); // 昔は非公開関数だった?

// BSTRのcacheを止める
void DisableBSTRCache()
{
HINSTANCE hLib = LoadLibrary(L"OLEAUT32.DLL");
if (hLib != NULL)
{
SETOANOCACHE SetOaNoCache = (SETOANOCACHE)GetProcAddress(hLib, "SetOaNoCache");
if (SetOaNoCache != NULL)
SetOaNoCache();
FreeLibrary(hLib);
}
}
#endif