回覆列表
  • 1 # 我是阿嘛

    我重新看了下你的程式碼,很可能是這一處問題:

    GlobalFree(hMem);

    pStream->Release();

    上面這兩句程式碼需要調換位置,一定要先呼叫pStream->Release()再呼叫GlobalFree(),GlobalFree函式將“嘗試釋放”掉hMem指向的記憶體,如果你的Release函式沒有呼叫,這塊記憶體的引用計數值仍是大於1的,將無法被GlobalFree成功釋放掉。

    詳情請參考MSDN中對CreateStreamOnHGlobal函式的文件說明,當中有這樣一句

    http://msdn.microsoft.com/ZH-CN/library/windows/desktop/aa378980(v=vs.85).aspx

    Do not free the hGlobal memory handle during the lifetime of the stream object. IStream::Release must be called before freeing the memory handle.

    根據msdn的文件,你上述兩句順序是肯定有問題的,所以請你更正一下再做除錯。如果執行之後還有問題,請再補充。

  • 中秋節和大豐收的關聯?
  • 華為p20和iPhone8,你會選哪個?