У меня есть следующий код для открытия OLE Storage из буфера. Но это, по-видимому, вызывает утечку памяти. При работе он потребляет много памяти.
Я не знаю, где это происходит.утечка памяти C++ в API StgStorage
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