This is the malloc()/free()/realloc()/forget() package used at astrovax. [Except for the MALLOCTRACE feature -- see ./TRACE_README] It does not have the property of the 4.2 BSD malloc of allocating huge amounts of excess memory. Image processing is done here and large malloc requests are not rare. It is quite undesirable when one asks for 4.1 megabytes of memory to have it try to return 8 megabytes and to fail because the process goes over quota or there is not enough swap space. Also this malloc does not have the property of the 4.1 BSD malloc that a search for free memory traverses a linked list that covers all previous allocations, causing thrashing by touching them and thus paging them back into memory. Hopefully this malloc covers the best of both worlds. There is a fair attempt at storage compaction, merging freed areas with adjacent free areas and optionally returning freed areas adjacent to the break back to the system, thereby shrinking the size of the process. It is also allowable and compatible with this package to obtain memory by the use of the sbrk() system call. This memory can be reclaimed and returned to the malloc arena by the use of the provided forget() function. This function is intended to provide the functionality of the Forth FORGET primitive in an environment that also includes malloc and free. The main disadvantage of this package is a larger storage overhead of 24 bytes per memory area, due to the fact that each area is linked into two bi-directional chains. Non-vax users should edit the commented system-dependent parts of Makefile and malloc.h for the requirements of one's own computer. Bill Sebok Princeton University, Astrophysics {allegra,akgua,cbosgd,decvax,ihnp4,noao,philabs,princeton,vax135}!astrovax!wls