Home > Mobile >  Adding number to pointer value
Adding number to pointer value

Time:10-07

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.

  • Related