在具有_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. java.lang.IllegalStateException:需要在CookieSyncManager :: getInstance()之前調用CookieSyncManager :: createInstance()
- 3. 重用已分配的類 - 是否需要釋放它?
- 4. 重新分配自動釋放對象
- 5. 釋放和重新分配一個viewController?
- 6. 爲什麼在分配給它之前需要刷新變量?
- 7. 創建不需要的分配/未能釋放分配
- 8. 在將其設置爲新值之前,是否需要釋放結構指針?
- 9. 在「&」之前需要放置什麼?
- 10. 在將另一個對象分配給它的引用之前,是否需要釋放我的實例對象?
- 11. GL_TEXTUREs是否需要釋放/釋放?
- 12. Swift,SpriteKit:釋放一個Gamescene並重新分配一個新的
- 13. 在分配對象之前需要檢查nil
- 14. 在Delphi字符串複製之前需要分配內存嗎?
- 15. 在配置文件到期之前,應用程序需要進行Ad-Hoc重新分配
- 16. 是否需要在將元素分配給它之前分配指針數組?
- 17. 在Graphics.Dispose之前或之後釋放DC?
- 18. 是否需要釋放內存才能重新啓動redis?
- 19. iPhone在重新編譯之前需要清潔目標
- 20. 在git cherry pick之前需要新的分支嗎?
- 21. 在讓垃圾收集垃圾之前,我需要釋放Swing組件嗎?
- 22. 在使用realloc之前需要釋放一個指針變量嗎?
- 23. SSIS包配置需要重新配置
- 24. 在Rails中,你需要在渲染之前重新分配所有的實例變量嗎?
- 25. 我需要釋放CFError嗎?
- 26. 需要釋放互斥鎖?
- 27. 你需要釋放NSData嗎?
- 28. allocWithZone對象需要釋放
- 29. NSArray不需要的釋放
- 30. 它需要釋放AVCaptureVideoPreviewLayer嗎?
感謝銳利。在Visual Studio IDE的源代碼中,我遇到了麻煩_com_ptr_t :: CreateInstance,大概是因爲它是一個模板。引用MSDN將comip.h標識爲感興趣的源文件。我花了一分鐘才意識到替代原型調用主版本(將CLSID作爲第一個參數),在做其他任何事情之前清楚地調用_Release()。再次感謝。 – fitz