#include "gwin.user.h" main() { UBYTE *AllocMem(), *fake1, *fake2; /* What, you may ask, is this? Well I usually test memory */ /* allocation/deallocation by checking to see if the */ /* available memory is the same after I run my program */ /* as it was before I run my program. On the Amiga, it */ /* is not. Some sort of screwball accounting is being */ /* done by the operating system so that if you used */ /* diskfonts (which I do), the memory does not REALLY */ /* free itself up until you try to allocate more than is */ /* "virtually free". By attempting to allocate a large */ /* block of memory, (in this case, 10 megabytes which is */ /* impossible) we fake the system out into freeing */ /* everything so that we can tell if we forgot to free */ /* our own personal memory. If you check the memory that */ /* appears to be available before running a program, that */ /* opens a diskfont, then run the program, then look at */ /* the memory availability again, it will look like you */ /* forgot to release memory. If you run recovermem, the */ /* ACTUAL memory available will be reset to what it */ /* REALLY is! */ /* This program will also remove libraries if their open */ /* counts are 0. All sorts of amazing things... */ /* I have put code similar to this in the uend routine */ /* of GWIN. It occurs right before the call to the user */ /* cleanup handler. */ fake1 = AllocMem(10000000,MEMF_CHIP); fake2 = AllocMem(10000000,MEMF_FAST); if(fake1) FreeMem(fake1,10000000); if(fake2) FreeMem(fake2,10000000); }