我知道我可以使用gcroot模板在C ++ / CLI项目中为本地类中的托管类分配和存储句柄。问题是: 1.如何将对gcroot引用的ManagedClass的引用传递给托管模块中的另一个托管类? 2.更新托管模块中的ManagedClass时可能出现什么问题?例如,垃圾收集可以将它移动到内存中,以便gcroot包装的句柄将不再有效吗?
答案 0 :(得分:1)
- 如何将对gcroot引用的ManagedClass的引用传递给托管模块中的另一个托管类?
醇>
刚刚通过gcroot。 gcroot将运算符转换为包含的T ^。
- 当我更新托管模块中的ManagedClass时,会出现什么问题吗?
醇>
没有任何关于我的想法。
例如,垃圾收集可以将它移到内存中,以便gcroot包含的句柄不再有效吗?
没有。 gcroot包装“句柄” - 它不是直接指针,因此如果垃圾收集器将指向的对象移动,则句柄(由gcroot保持)将更新以知道新位置。因此,gcroot仍然有效。