我可以将IntPtr的值转换为另一个IntPtr而不会在C#中不安全吗?

问题描述 投票:0回答:1

假设我有一个IntPtr,它是一个从本机代码中获取的void **。当我要将它推向一个void *等价IntPtr时,我使用了这样的代码:

unsafe
{
    var innerPtr = (IntPtr)outerPtr.ToPointer();
}

为此,我需要启用unsafe代码。我想知道是否有另一种方法来转换这种指针而不安全?


更新:

抱歉,我的问题无效。 (IntPtr)outerPtr.ToPointer()的用法毫无意义。

c# pointers unsafe
1个回答
0
投票

(IntPtr)outerPtr.ToPointer()实际上没有做任何有用的事情,结果仍然包含相同的地址。

如果相当于将void**解引用到void*是你想要的,你可以使用Marshal.ReadIntPtr(IntPtr address)

© www.soinside.com 2019 - 2024. All rights reserved.