It's dependent on the processor architecture. Pointers are just addresses of memory. A 64-bit processor can address 64-bits of memory (theoretically) thus the size of the pointer needs to be 64-bits which is 8 bytes. A 32-bit processor would need 4 bytes. If you compile as a 64-bit executable and run you should get 8.