I want to run an old 32bit game with enough memory as if it is a 64bit game.

I want to do this because the original was poorly designed and at some point runs out of memory and crashes. So I want to run it with a bigger memory allocation, i.e. as if it was 64bit.

Is there a way to do this?

  • Unless there's some sort of a "maximum allocated memory" switch in the settings, you won't be able to do it unless you get into the source code. Max memory you can access in a 32 bit machine is something less than 4GB. So you can't get more than that. Otherwise, 32bit, 64bit makes no difference.
    – Diagon
    Aug 26 '20 at 21:05

A 32-bit program can use maximum 2^32 sized address spaces, which is 4GB. And 64-bit programs can use up to 2^64 sized address spaces, which is 16 ExiBytes. So, definitely, 64-bit programs can make better use of available memory and CPU.

Still 32-bit applications can use 2 out of 4 GB, rest are reserved by system, but in 64-bit system you can use a software named 4GB Patch to let 32-bit applications make use of the rest 2 GB. Or if 64-bit versions of the game are available then download it.

Still there are not ways of boosting the memory usage of 32-bit applications more than 4GB.

  • Interesting, I haven't heard of 4GB Patch before. Did you use it yourself yet?
    – Albin
    Aug 21 '20 at 8:28
  • @Albin yep, it works nice, lets 32-bit applications use the full 4 GB memory, what it does is it just sets a flag in the file. Aug 21 '20 at 8:37
  • interesting, what happens if an application wants to use more then 2GB without the patch? Does it get allocated virtual memory (e.g. stored on the HD)?
    – Albin
    Aug 21 '20 at 8:43
  • Yes @Albin, swap partitions and virtual memory matter. Actually the "4GB" is physical memory. Aug 21 '20 at 8:44
  • ok, so in case of the OP the application will probable crash anyway (unless the crashing is due to timeouts while handling the virtual mem), right?
    – Albin
    Aug 21 '20 at 8:45

Short: Using 64 bit memory will not be enough. The software has to be coded as an 64bit application in order to use 64bit memory which isn't the case.

More detailed explanation: This is due to "addressing limitations". Simply speaking it does not know how to access memory beyond 32bit which means it has a theoretical limit of up to 4GB (2^32) of RAM as a maximum (64bit could theoretically use up to 2^64 GB of RAM). This is all very general and simple and not the absolute truth. For example solutions like memory remapping allowed a 32bit Win to use more the 4GB of memory. But they have to be implemented into the software like 64bit has to be implemented within the software.

Conclusion: So unless you change the source code you can not do anything from the "outside". Edit: My bad, apparently there is a little bit you can do: Wasif offered a possible work around in his answer to access the full 32bit address range for a total of 4GB instead of just 2GB (here's a thorough article about it). But still, it will not be "as if it was a 64 bit" application. (And it might not necessary solve the OP's problem of crashing either, since more then 2GB of memory would be available to the application via virtual memory provided by the operating system).

Note: see Wasif answer for a more in depth explanation and a way to access more then the standard 2GB of memory to make use of the full address range of a 32bit application.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.