バッファからOLEストレージを開くためのコードは次のとおりです。しかし、それはメモリリークの原因と思われる。実行時に多くのメモリを消費します。
どこが漏れているのかわかりません。StgStorage APIのC++メモリリーク
int OleCompoundBase::LoadFile(BYTE* buffer, int buffer_len)
{
dwOpenMode = STGM_READ | STGM_SHARE_EXCLUSIVE; // open stream mode
m_pRootStg = NULL;
// Load from buffer
ILockBytes *iLb = NULL;
HRESULT hres = CreateILockBytesOnHGlobal(NULL, true, &iLb);
if (hres == S_OK) {
ULARGE_INTEGER ui;
ui.LowPart = 0;
hres = iLb->WriteAt(ui, buffer, buffer_len, NULL);
if (hres == S_OK) {
hres = StgIsStorageILockBytes(iLb);
if (hres == S_OK) {
hres = StgOpenStorageOnILockBytes(iLb, NULL, STGM_READ | STGM_SHARE_DENY_READ, NULL, 0, &m_pRootStg);
}
}
}
iLb->Release();
return hres;
}
m_pRootStgはどのようにこのリークを測定しているデストラクタ
にそれを変更する必要がありますが、[ 'CreateILockBytesOnHGlobal'](https://msdn.microsoft.com/en-us/に2番目の引数として' true'を渡すみましたライブラリ/ windows/desktop/aa378977(v = vs.85).aspx)? –
が試行されました。それは同じ – xfr1end