创建Direct2D设备时内存泄漏

时间:2017-12-13 20:00:56

标签: c++ memory-leaks directx-11 direct2d dxgi

出于测试目的,我将代码放入for循环中,创建并释放一千个Direct2D设备,但它永远不会释放分配的内存:

for (UINT i = 0; i < 1000; i++) {
    hr = m_lpD2DFactory->CreateDevice(lpDxgiDevice, &m_lpD2DDevice);
    m_lpD2DDevice->Release();
}

执行上面的代码可以容纳大约500MB的内存。似乎释放设备没有任何效果。

我感谢任何帮助。

更新

我发现如果我取消注释我的其余代码会导致使用创建的设备对ID2DRenderTarget::BeginDrawID2DRenderTarget::EndDraw进行一对调用,则Release方法会按预期工作。它仍然很奇怪,如果我的代码不能导致这些调用,可能会出现问题。

hr = m_lpD2DFactory->CreateDevice(lpDxgiDevice, &m_lpD2DDevice);
...
lpRenderTarget->BeginDraw();    
lpRenderTarget->EndDraw();
...
m_lpD2DDevice->Release();

0 个答案:

没有答案