HALF_PTR Windows数据types

VS文档指出

一个指针的大小的一半。 在包含指针和两个小字段的结构中使用。

究竟是什么types,如何使用?

Solutions Collecting From Web of "HALF_PTR Windows数据types"

在包含指针和两个小字段的结构中使用。

这意味着在下面的结构中,不需要填充:

struct Example { void* pointer; HALF_PTR one; HALF_PTR two; }; 

当然,这只有在HALF_PTR (64位系统上的32位,32位系统上的16位)足以容纳预期值时才有意义。

我在英特尔的网站上发现了这篇文章 ,并且他们建议在你有一个有许多指针成员的类的上下文中使用它,还有一个32位偏移量来获得实际地址,以减少类的数据膨胀。 本文特别提到安腾平台,因为它使用的是64位指针,而不是32位,但是我认为在任何使用64位指针的系统上问题/解决方案都是一样的。

所以简而言之,它似乎表明,如果您希望减少某个类的内存占用量,则可以使用它。

注意:匿名结构不是标准的,但MSVC需要它们:

 union { int * aPointer struct { HALF_PTR lowerBits; HALF_PTR upperBits; }; } myvar; //You can be assured this union is sizeof(int *) 

如果你认为它们不是非常有用,那么你就是对的。