有没有直接的方法可以完成 pin_ptr 的功能?

发布于 2024-07-25 18:58:49 字数 394 浏览 3 评论 0原文

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)
    }
};

Can the behaviour of pin_ptr be achieved directly in C++/CLI? For example, is it possible to write CLR code directly, something like asm for native apps?

An example of what I would like to do is a wrapper for a pin_ptr (impossible because of the restrictions on pin_ptrs).

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)
    }
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独闯女儿国 2024-08-01 18:58:49

使用GCHandle.Alloc。 与 GCHandleType.Pinned。 然后,您可以使用 GCHandle.AddrOfPinnedObject 获取.NET 对象的地址。

Use a GCHandle.Alloc. with GCHandleType.Pinned. You can then use GCHandle.AddrOfPinnedObject to get the address of the .NET object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文