假设我有一个IntPtr,它是一个从本机代码中获取的void **。当我要将它推向一个void *等价IntPtr时,我使用了这样的代码:
unsafe
{
var innerPtr = (IntPtr)outerPtr.ToPointer();
}
为此,我需要启用unsafe
代码。我想知道是否有另一种方法来转换这种指针而不安全?
更新:
抱歉,我的问题无效。 (IntPtr)outerPtr.ToPointer()
的用法毫无意义。
(IntPtr)outerPtr.ToPointer()
实际上没有做任何有用的事情,结果仍然包含相同的地址。
如果相当于将void**
解引用到void*
是你想要的,你可以使用Marshal.ReadIntPtr(IntPtr address)
。