0
在我UMDF
司機,我有包裝內CComPtr
的Windows UMDF但是CComPtr IWDFMemory沒有得到釋放
CComPtr<IWDFMemory> memory;
的CComPtr
文檔說一個IWDFMemory
,如果CComPtr
對象失控的範圍,它就會自動地釋放。這意味着該代碼不應該產生任何內存泄漏:
void main()
{
CComPtr<IWDFDriver> driver = /*driver*/;
/*
driver initialisation
*/
{
// new scope starts here
CComPtr<IWDFMemory> memory = NULL;
driver->CreateWdfMemory(0x1000000, NULL, NULL, &memory);
// At this point 16MB memory have been allocated.
// I can verify this by the task manager.
// scope ends here
}
// If I understand right the memory I allocated in previous scope should already
// be freed at this point. But in the task manager I still can see the 16 MB
// memory used by the process.
}
另外,如果我手動分配NULL
到memory
或範圍之前調用memory.Release()
結束內存不會被釋放。我想知道這裏發生了什麼?
那麼這個例子的好習慣是什麼?我希望內存在範圍的最後被釋放。如果不是駕駛員本身,我應該選擇什麼作爲父對象? – arminb
我對UMDF並不熟悉,但我研究瞭如何使用IWDFDriver :: CreateWDFMemory,並且在指定非空所有者的地方,典型的所有者是IWDFIoRequest對象。 –