我有一个执行WMI查询的go程序,然后将数据转换回go-land数据结构(使用方法here)。每隔一段时间,就会出现GC并且会将0
的一些看似随机的内存部分核心化,造成可怕的破损。
我正在试图找出导致此问题的确切原因,我相信下一步是了解COM调用期间会发生什么。我目前的理解是:
这是关于会发生什么的? Windows如何选择内存位置,使其不会覆盖现有数据?
答案 0 :(得分:1)
使用AddRef()和Release()计算每个COM对象的引用。也许您需要一个额外的AddRef()来保持更长时间。
我从示例代码中看到有很多deferred Release调用。这很好,因为我们希望在main结束时释放对象。在你的程序中,你可能想要推迟释放更长时间(但是,我不知道去或者究竟是什么延迟)