在本机类中存储对托管类的引用,并在托管模块中更新它

时间:2011-05-18 11:06:33

标签: .net c++-cli

我知道我可以使用gcroot模板在C ++ / CLI项目中为本地类中的托管类分配和存储句柄。问题是: 1.如何将对gcroot引用的ManagedClass的引用传递给托管模块中的另一个托管类? 2.更新托管模块中的ManagedClass时可能出现什么问题?例如,垃圾收集可以将它移动到内存中,以便gcroot包装的句柄将不再有效吗?

1 个答案:

答案 0 :(得分:1)

  
      
  1. 如何将对gcroot引用的ManagedClass的引用传递给托管模块中的另一个托管类?
  2.   

刚刚通过gcroot。 gcroot将运算符转换为包含的T ^。

  
      
  1. 当我更新托管模块中的ManagedClass时,会出现什么问题吗?
  2.   

没有任何关于我的想法。

  

例如,垃圾收集可以将它移到内存中,以便gcroot包含的句柄不再有效吗?

没有。 gcroot包装“句柄” - 它不是直接指针,因此如果垃圾收集器将指向的对象移动,则句柄(由gcroot保持)将更新以知道新位置。因此,gcroot仍然有效。