Is it possible to use more than 2 Gbytes of memory in a 32-bit program launched in the 64-bit Windows?
Yes, it is. To do that, you should tell the linker that the application can process addresses for more than 2 Gbytes - that is compile the application with the /LARGEADDRESSAWARE parameter. Now the virtual address space for one 32-bit processor will be theoretically limited by 4 Gbytes of physical memory (in practice, the application can access about 3.5 Gbytes). The /LARGEADDRESSAWARE parameter is disabled by default.
- MSDN Library. /LARGEADDRESSAWARE (Handle Large Addresses).
- Discussion at Stackoverflow.com. "Why 2 GB memory limit when running in 64 bit Windows ?"
- Knowledge Base. How much memory can an application access in Win32 and Win64?