我使用ArcObjects,ESRI的API为ArcGIS应用程序编程。
我想知道是否有一个工具可以检查哪些COM对象存在或处于堆栈状态。
我已经知道要释放它们,但我会检查每种方法,看看是否有剩余物。
答案 0 :(得分:1)
据我所知,没有这样的工具。在最低级别,COM对象只是内存的特定二进制布局。分配内存的方式和位置取决于实现COM对象的代码。任何工具都只能检查它所处理的COM对象的内存。实际上,它只能检查同一个公寓中的COM对象,对于任何其他对象,它只能检查代理。
此外,COM对象永远不会在堆栈上分配[*];它们总是在堆中分配。
[*]尽管ATL的CComObjectStack<>对于单元测试而言非常方便。
答案 1 :(得分:1)
在Google中随机输入“COM Inspector”生成this link。看起来不错,没有个人经验。自己运行此查询以查找其他查询。
答案 2 :(得分:1)
如果您使用的是.NET,则应循环浏览使用AppDomain.CurrentDomain.GetAssemblies加载的所有程序集。
要查看加载了哪些扩展,请使用IExtensionManager循环扩展。
查看加载了哪些命令栏是a bit more complicated。