在具有_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