your problem is not the amount of memory usable in windows. You have requested 3Gb only for stack (not memory, just stack). That's very uncommon.
For example, a normal limitation on FreeBSD (not windows) for a process stack is this:
$ ulimit -a
number of pseudoterminals (-P) unlimited
socket buffer size (bytes, -b) unlimited
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) 33554432
file size (blocks, -f) unlimited
max kqueues (-k) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 230121
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 524288 <<<<<<<<<<<<<<<
cpu time (seconds, -t) unlimited
max user processes (-u) 12042
virtual memory (kbytes, -v) unlimited
swap size (kbytes, -w) unlimited
As you see, stack is limited by the system to 524288 Kilobytes so probably on this system you'll fail also.
It's common your system has some trouble giving you such amount of memory to stack. All operating systems limit the
Think that it is common to have a limit on the order of 10Mb for stack per process... so you had probably some design issue.
What are you using such stack amount in your program?
(Sorry, neither I have a close windows machine to check this, nor I know how to check the maximum amount allowed for stack segment)