16.1 Memory Configurations

You should expect that your Windows application will be run in either of two memory configurations; most often, which configuration depends on the type of the system CPU and the amount and configuration of memory. Windows supports two memory configurations:

Standard mode

386 enhanced mode

If the user started other programs before starting Windows, the amount of memory available to Windows will be less than that installed in the system.

Because Windows uses different memory configurations on different systems, your application should be able to run successfully with either memory configuration. The best way to ensure this is to write the application by following all the Windows memory-management rules. For a list of these rules, see Section 16.5, “Traps to Avoid When Managing Program Data.”

Wherever possible, your application should not contain code that is dependent upon a particular memory configuration. In some instances, however, an application must be able to determine the memory configuration in which it is running. To do this, the application can call the GetWinFlags function. This function returns a 32-bit value containing flags that indicate the memory configuration in which Windows is running and other information about the user's system.