As far as I can tell, the crash happens when SWL has more than 2GB allocated, since that would be 2048MB. After the crash I can go to Task Manager and the program generally has somewhere between 2100 and 2600MB allocated. I have also used Task Manager a couple of times before the crash and it generally has more than 2048 allocated.
Something else is happening. Perhaps it’s asking for too large an incremental allocation or perhaps the code to shape the requested memory is failing somehow.
I am by no means an expert on this - my programming with C and C++ was >25 years ago and was undergraduate-level assignment stuff.
32-bit Windows can only address 4GB anyway (without some sort of windowing). I was under the impression that normal programs allocated the lower 2GB for the program and the upper 2GB for addressing Windows services, while the LAA switch changed that to 3GB and 1GB respectively.
Not sure how it works with 64-bit Windows (yes I have that). Presumably there’s still a “Windows service window” in the upper address area for 32-bit executables (shades of the DOS 640kb space - yes I did do some upper memory stuff to get certain DOS programs to run).