I've just started using Visual Studio 2010 beta and I have noticed something strange: if I increase a pointer using "pointer++" and then display the memory address, I notice that the new address is LESS than the previous by as many bits as the type requires.
If, instead, I display the pointer without changing it by using, for example "cout << pointer + 1", then, as expected the memory address is increased by as many bits as it should.
Example with int*:
in the first case
001AFA5C becomes 001AFA58 (so it's 4 bits less)
in the second case
001BFA58 becomes 001BFA5C (so, as expected it's 4 bits more)
The very opposite happens using "pointer--", the memory address is increased by 4 bits.