__w64 int*这个类型有些奇怪,64位上大小显示为8,但是作为指针类型,两个变量进行算术运算时,得出的值并不正确。
比如
__w64 int* p1 = 0x00000090;
__w64 int* p2 = 0x000000a0;
long = p1-p2; //long的值为4
实际应该为16/8 = 2;
还是我理解错了??
改用 PULONG_PTR一切正常
#if defined(_WIN64)
typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
#else
typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;