I've noticed that pointers are 4 bytes long, and guessed they are offsets.
Is there a way to define a far(6 bytes. seg:offset) pointer in C or C++? Or did I assume it all wrong from the beginning?
There haven't been far pointers since at least the 80386. They were 20 bits long in order to be able to address more than 64 KiB of memory. When we moved to 32-bit architectures, all pointers became 32-bit integers, able to address up to 4 GiB of memory. CPUs running in 32-bit mode have no way of accessing more than that. If you need more memory, you'll have to switch to a 64-bit architecture. They can theoretically access up to 16 EiB (exabytes).