I am trying to add a number to a pointer value with the following expression:
&AddressHelper::getInstance().GetBaseAddress() 0x39EA0;
The value for the &AddressHelper::getInstance().GetBaseAddress() is always 0x00007ff851cd3c68 {140700810412032}
should I not get 0x00007ff851cd3c68 0x39EA0 = 7FF81350DB08 as a result?
while I am getting: 0x00007ff851ea3168 or sometimes 0x00007ff852933168 or some other numbers.
Did I took the pointer value incorrectly?
CodePudding user response:
With pointer arithmetic, type is taken into account,
so with:
int buffer[42];
char* start_c = reinterpret_cast<char*>(buffer);
int *start_i = buffer;
we have
start_i 1 == &buffer[1]reinterpret_cast<char*>(start_i 1) == start_c sizeof(int).- and (when
sizeof(int) != 1)reinterpret_cast<char*>(start_i 1) != start_c 1
In your case:
0x00007ff851ea3168 - 0x00007ff851cd3c68) / 0x39EA0 = 0x08
and sizeof(DWORD) == 8.
