Memory Allocation Test Program

This program will help you determine if your computer's memory allocation is fragmented, say by badly behaving dll's provided by some vendors.

Works under Windows XP & 2000, possibly others. 

Download the memalloc.exe and memalloc.bat files to a convenient directory, and launch memalloc.bat by double-clicking on it. 

Output will be written to file memalloclog.txt.  In a good case, the output will look roughly like this:

Address 0, length 10000, state 10000 MEM_FREE, type 0 module <directory>\memalloc.exe
Address 10000, length 1000, state 1000 MEM_COMMIT, type 20000 module
... stuff deleted
Address 77e60000, length 1000, state 1000 MEM_COMMIT, type 1000000 module C:\WINDOWS\system32\kernel32.dll
... more stuff deleted
Largest MEM_FREE region = 77790000 (2004418560)    [These values are hex (decimal).]

However it may happen that the largest MEM_FREE region is substantially less than 2 GB (which is max address space for a Windows process). In that case you should study the listing to see what is causing your memory to be fragmented.  Sometimes vendor-supplied dll's are hard-coded to live in the middle of process address space, and are installed to run as part of every process whether it uses the dll or not.  If that happens, then you will have to figure out how to keep that dll from getting loaded.  It may be necessary to uninstall the offending software.

I wrote this program to help debug a problem with stitching large panoramas. It turned out that my computer was running two dll's (one from Omnipage and one from Iomega) that essentially chopped the address space for every process into three not-so-big chunks, so that pano12.dll could not stitch large panos. Uninstalling the offending software fixed the problem.


This is free software -- use at your own risk.

Comments/questions, please contact me by email .

Rik Littlefield

Page last modified July 24, 2004