Такое распределение просто невозможно в 32-битных системах x86 с sizeof(int)==4
(вы запрашиваете 4 ГБ).Общее адресное пространство процесса ограничено 4 ГБ, а сам процесс обычно ограничен менее чем этим (2 ГБ или 3 ГБ для 32-битной Windows в зависимости от настроек boot.ini
и редакции Windows, не уверен, какое ограничение применяется для 32-битных процессов в 64-битной Windows, но 4 ГБ просто невозможны).
Для 64-битного случая вам потребуется 4 ГБ виртуальной памяти, доступной для поддержки этого выделения, для успешного выполнения.