有没有直接的方法可以完成 pin_ptr 的功能?
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_ptr
s).
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用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.