【问题标题】:Why windows use LPVOID to define a address?为什么windows使用LPVOID来定义地址?
【发布时间】:2015-05-05 02:09:28
【问题描述】:

我阅读了一些关于调试器的代码,但我对代码用于定义内存地址的变量感到困惑。有时使用DWORD,有时使用LPVOID,谁能告诉我为什么windows使用LPVOID来定义地址?

【问题讨论】:

  • 不,它从不使用 DWORD 来表示地址。这当然不适用于 64 位版本,8 字节地址无法容纳 4 字节变量。所以我想这解释了为什么它使用 LPVOID。

标签: windows debugging memory


【解决方案1】:

LPVOID 在所谓的“匈牙利”表示法中的意思是“指向 void 的长指针”,即void far *。后者起源于 16 位代码,现在已经没有意义了。所以,LPVOID 现在和void * 一样,但为了兼容性,名称仍然保持不变。

【讨论】:

    【解决方案2】:

    我的猜测是,不能保证指针值适合 DWORD(例如,在 64 位操作系统上)

    在 Windows 中,一个 DWORD 是 explicitly 一个 32 位整数。 LPVOID 值是明确的指针大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多