在具有_com_ptr_t成員的C++類中,如果CreateInstance()在同一個指針上重複使用以獲取COM對象的新實例,而不首先執行Release(),是否會內存泄漏?有據可查的是,當這些智能指針之一超出範圍時ref ref會減少,並且封裝指針不是Detach()。當重複CreateInstance()時,MSDN似乎沒有提及ref ref的含義。在重新分配CreateInstance之前需要釋放com_ptr_t?
1
A
回答
5
由於_com_ptr_t
在CreateInstance()
的開頭調用Release()
,所以不會發生泄漏,您可以通過閱讀_com_ptr_t
實現輕鬆驗證自己。
0
在調用CoCreateInstance()之前,CreateInstance()調用 _Release()。請參閱裏面的實現。
相關問題
- 1. 在爲它分配新值之前,我應該釋放NSString嗎?
- 2. 釋放和重新分配一個viewController?
- 3. 重新分配自動釋放對象
- 4. 爲什麼在分配給它之前需要刷新變量?
- 5. 創建不需要的分配/未能釋放分配
- 6. GL_TEXTUREs是否需要釋放/釋放?
- 7. Swift,SpriteKit:釋放一個Gamescene並重新分配一個新的
- 8. 在Delphi字符串複製之前需要分配內存嗎?
- 9. 在配置文件到期之前,應用程序需要進行Ad-Hoc重新分配
- 10. 是否需要在將元素分配給它之前分配指針數組?
- 11. 是否需要釋放內存才能重新啓動redis?
- 12. iPhone在重新編譯之前需要清潔目標
- 13. 在讓垃圾收集垃圾之前,我需要釋放Swing組件嗎?
- 14. 在使用realloc之前需要釋放一個指針變量嗎?
- 15. 在Rails中,你需要在渲染之前重新分配所有的實例變量嗎?
- 16. 我需要釋放CFError嗎?
- 17. 需要釋放互斥鎖?
- 18. 你需要釋放NSData嗎?
- 19. allocWithZone對象需要釋放
- 20. 不能釋放C中的重新分配內存
- 21. 重新分配數組可釋放它所使用的內存?
- 22. C++ 11變量重新分配內存釋放
- 23. CookieSyncManager ::的createInstance()需要CookieSyncManager ::的getInstance()
- 24. 爲什麼我需要使用Activator CreateInstance?
- 25. 在刪除之前總是要釋放一個QSemaphore?
- 26. 使用Marshal.FreeHGlobal()釋放之前在本機端分配了「new」的數組?
- 27. 如何在活動退出之前釋放分配給drawables的內存?
- 28. 我是否需要釋放在SWIG輸出類型圖中分配的ByteArray?
- 29. 分配,釋放,分配變量
- 30. 爲什麼在重放之前調用publish()很重要()
感謝銳利。在Visual Studio IDE的源代碼中,我遇到了麻煩_com_ptr_t :: CreateInstance,大概是因爲它是一個模板。引用MSDN將comip.h標識爲感興趣的源文件。我花了一分鐘才意識到替代原型調用主版本(將CLSID作爲第一個參數),在做其他任何事情之前清楚地調用_Release()。再次感謝。 – fitz