Aside from your empirical evidence, I can confirm that the stack (in x86) grows from a (seen as an unsigned value) high numerical value towards zero. There is no (reasonably sane) way you can make an x86 processor do the other way around. Other processors are generally the same, but there's nothing saying the stack could not start at a numerically low address and grow towards a higher address.
Note also that the heap is not at all guranteed to be anywhere in particular in relation to the stack - the stack can be placed before, after or in the middle of the heap-space.
--
Mats

