【发布时间】:2016-02-24 13:39:22
【问题描述】:
是否可以像在C++/CLI 中的pin_ptr 一样在C# 中创建固定指针?
【问题讨论】:
-
仅适用于某些结构类型的数组(
int、uint、short、ushort、IntPtr...)和strings -
C# 代码中 pin_ptr 的完全等价物是
fixed关键字。它与固定指针不同,它使用更优化的方式告诉 GC 不要移动对象。只是抖动生成的元数据中的一个状态位,没有底层的 CLR 调用。但是你必须小心,一旦执行离开固定语句,指针就会变得无效。 -
@HansPassant
pin_ptr比fixed更强大。使用pin_ptr,您可以固定任何东西,而使用fixed,您只能固定一些东西。