Since this thread was brought back to life, I would like to correct this statement
"If you run 32-bit software in a 64-bit environment it will use twice as much memory. As a 64-bit OS uses 64-bit words, when you run a 32-bit program, there is some emulation of course, the OS reserves 64 bits for every 32-bit word that the application is using. An app that would use 20MB in a 32-bit OS would use 40MB in a 64-bit OS"
The only thing that's forced from 32bit to 64bit is memory pointers.
Lets say you have an array of data that's 128k in size. You need a pointer to "point" to the location in memory where this array is. In a 32bit machine, this pointer would consume 32bits, in a 64bit machine, it would be 64bits, but the actual data is still 128K.
So, it's not a strait up 2xs memory used.