If there isn't enough continuos space in the virtual memory space it is not possible to real map memory block to it to be used. So you should check your memory areas.
Where do your dll and exes map to?
There is a tool rebase.exe which is part of the ms vc framework which will allow you to realloc the position your dll or exe are loaded to. This could give you more free virtual memory space which will allow you to get greater memory blocks.
The profile option of the "dependency walker" will show you where your dlls and exe
are loaded to.
vmmap from sysinternals could help to get a better understanding how mwmory is fragmented and handled.