Addresses seen in a program are always virtual and the behaviour described by the OP is a Linux counter-measure to avoid buffer overflow attacks.
Just to try, you can disable it with
sysctl -w kernel.randomize_va_space=0
then run again your program and watch.
The global one is in another space of memory that can't be harmful in an hackish-wise point of view. That's because it is not randomized every time.