0
我有以下代码从缓冲区中打开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是释放析构函数
你试过路过TRUE;作为第二个参数['CreateILockBytesOnHGlobal'](https://msdn.microsoft.com/en-us/库/窗/桌面/ aa378977(v = vs.85)的.aspx)? –
试过。它是一样的 – xfr1end