[C#]C++/CLI中interior_ptr和pin_ptr的区别

interior_ptr

当垃圾回收器移动对象时,Interior pointer能随之移动,并始终指向该对象。

但是如果把这个指针返回给外部函数,那么当垃圾回收时(垃圾回收期间会压缩对象,),对象地址发生改变,指针会指向错误的地址。

pin_ptr

在外部调用托管堆中指针时,垃圾回收过程中该指针会发生改变,引起外部调用的错误。必须使用pin_ptr指针将该指针固定。

因此,如果需要在外部访问托管对象,那么必须使用pin_ptr,不能使用interior_ptr,否则可能会出BUG

原文地址:https://www.cnblogs.com/lizhenghao126/p/11053556.html