0

私の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()、メモリは解放されません。ここで何が起こっているのだろうか?

4

1 に答える 1