Typically, Linux is configured to use the kernel from 0xC000000 to 0xFFFFFFFF. This can be changed (for example, the shameful 4 GB-4 GB partition that does not reserve). glibc is usually loaded at 0xB000000.
On Linux, 0x00000000 can be requested by a specific mmap () call if it is not blocked by sysctl security (which turned out to be a bad idea to block).
Null selection job:
NULL is clearly allocated, so I assume that the program was prepared for the consequence of this. At the very least, -fno-delete-null-pointer-checksit is required for GCC to operate the affected code. I was told that this is an emulation of the old BSD behavior displaying the zero page.