私のUMDF
ドライバーでは、IWDFMemory
内部にパックされていますCComPtr
CComPtr<IWDFMemory> memory;
のドキュメントにCComPtr
は、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()
、メモリは解放されません。ここで何が起こっているのだろうか?