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对象的地址。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top