题
pin_ptr的行为可以直接在C ++ / CLI中实现吗?例如,是否可以直接编写CLR代码,如本机应用程序的 asm
?
我想做的一个例子是 pin_ptr
的包装(由于 pin_ptr
的限制而不可能)。
class WrappedPtr
{
public:
explicit WrappedPtr(String^ s)
{
pin = PtrToStringChars(s);
// I want to pin s for the lifetime of this object (only used on the stack)
}
};
解决方案
使用 GCHandle.Alloc 。使用 GCHandleType.Pinned 。然后,您可以使用 GCHandle.AddrOfPinnedObject 获取.NET对象的地址。
不隶属于 StackOverflow