For most operating systems the minimum address will likely be greater or equal to
$1000, because that's the page granularity(*) and operating systems will protect virtual memory page zero so that programs will fail correctly when they dereference
$0 (cause if allocated in the page tables it
will be a valid address). For example I think AIX requires a special
Nil-check-handling in the compiler, cause it
doesn't protect page
$0.
(*) If the page granularity is larger then the minimum will be larger as well
In the Windows NT family, it is $10000 thus making the first 64K of address space inaccessible. I don't remember what it was in the Win 9x family but, I believe it was the same value.
NOTE: the $10000 value is valid for both, 32 bit and 64 bit executables. IOW, the usable address space starts at that address regardless of bitness.
The
$10000 probably comes from the fact that NT's virtual manager works on 64k chunks which in turn is a
remnant from NT running on Alpha AXP.