Sam*_*uce 31
垃圾收集不仅会删除未引用的对象,还会移动仍然引用的对象,例如对可用内存池进行碎片整理.当关于在CLR堆中移动物体的文章谈到,它可能会说"当垃圾回收器移动的仍参照对象时,gcroot手柄会自动更新仍然指向CLR对象."
您可以使用pin_ptr
关键字阻止GC移动对象,如下所示:
Object ^obj = gcnew <something>;
pin_ptr pinned = obj; /* obj won't move due to GC as long as pinned is in scope. */
/* do something interop-y here, pass to native code in a DLL, etc. */
Run Code Online (Sandbox Code Playgroud)
有关固定的详细信息,请参阅此文章.
观察:文章可能有拼写错误.如果它说"在垃圾收集堆内"而不是"用垃圾收集堆",那会改善你的理解吗?文章中的措辞使得听起来就像每当GC清理房屋时,地球会在你的脚下移动.