【问题标题】:what is intptr?什么是intptr?
【发布时间】:2011-06-21 19:49:43
【问题描述】:

我不明白什么是 IntPtr,有人可以解释一下吗? 谢谢

【问题讨论】:

标签: c++-cli intptr


【解决方案1】:

它是一个与指针大小相同的整数。 32位图像32位宽,64位图像64位宽。

【讨论】:

    【解决方案2】:

    它是void* 的托管对应物。

    您可以在void* 之间进行转换以在托管代码中使用,而无需求助于托管层中的不安全代码,例如C#。

    【讨论】:

      【解决方案3】:

      它是一种特定于 .NET 平台的类型,用于表示指针或句柄。

      IntPtr 类型被设计为一个整数,其大小是特定于平台的。也就是说,这种类型的实例在 32 位硬件和操作系统上预计为 32 位,在 64 位硬件和操作系统上预计为 64 位。

      支持指针的语言可以使用 IntPtr 类型,并且可以作为在支持和不支持指针的语言之间引用数据的常用方法。

      IntPtr 对象也可用于保存句柄。例如,在 System.IO.FileStream 类中广泛使用 IntPtr 的实例来保存文件句柄。

      (来自MSDSN

      【讨论】:

        【解决方案4】:

        这是关于 c 和 c++ 类型的 intptr_t 但原理是一样的。 What is uintptr_t data type

        【讨论】:

          【解决方案5】:

          【讨论】:

          • 至少假装通过从文档中复制和粘贴相关信息来回答问题。链接不足以作为答案。
          • 我想向作者展示找到这样一个问题的答案是多么微不足道。
          • 嗯,这里的人的答案比我在提出问题之前尝试阅读的 msdn 要清楚得多。无论如何,感谢您的努力和善意。
          【解决方案6】:

          一个指针大小的黑盒。有时您的语言不支持不安全的代码/指针,因此需要在 API 中使用 IntPtr。

          我认为自 .net 2 以来它的使用已经减少,因为它的许多用例更适合安全句柄。

          【讨论】:

            猜你喜欢
            • 2010-11-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-28
            • 2012-06-10
            • 1970-01-01
            • 1970-01-01
            • 2017-05-18
            相关资源
            最近更新 更多