As you should understand, Win32 addressable space is only 4Gb, but, on 32-bit OS versions, it is limited to only 2Gb (the rest is reserved by OS), and can be extended to 3. On 64-bit versions, a 32-bit application is executed under WoW64:
http://en.wikipedia.org/wiki/WOW64[
^].
In case of WoW64, your application can get up to 4Gb.
But that's not all. I'm not sure if you are calculating your memory usage correctly. (And no, you should not rely on the Task Manager.) You may count the memory you take for some data object(s) you use, but this is not all memory you need. Simply enough, if you have not enough memory, you just don't have enough. OS is not trying to full you around and hide some valuable memory under the hood. You should either think of migrating to 64-bit architectures or limit your memory consumption by refining your architecture or keeping part of data on the disk.
[EDIT]
I learned that you have been using a memory profiler later, after I posted this answer. Well, very good…
—SA