Friday, November 19, 2010

Hidden Pointers

The following program:

#include <iostream>
int main() {
  int data = 5;
  int hidden_pointer = 
    reinterpret_cast<int>(&data);
  int *newData_p = 
    new (reinterpret_cast<void*>(hidden_pointer));
  std::cout << *newData_p << std::endl;
  return 0;
}

prints out a 5.

This assumes that the size of an integer is the same as that of a pointer. The above is an example of placement new. Initially, I was trying to find an example of using placement new instead of reinterpret_cast<>() for converting a hidden pointer back into a pointer, but instead ended up using reinterpret_cast<>() twice in the example.

No comments:

Post a Comment