DEFINITION MODULE Storage; (* Module: Dynamic storage allocation From: "Programming in Modula-2", 3rd, corrected edition, by N. Wirth Version: $Header$ *) (* Wirth's 3rd edition certainly is confusing: mostly it uses Allocate, but the module at the end of the book defines ALLOCATE. To avoid problems, I included them both. *) FROM SYSTEM IMPORT ADDRESS; PROCEDURE ALLOCATE(VAR a : ADDRESS; size : CARDINAL); (* Allocate an area of the given size and return the address in "a". If no space is available, the calling program is killed. *) PROCEDURE Allocate(VAR a : ADDRESS; size : CARDINAL); (* Identical to ALLOCATE *) PROCEDURE DEALLOCATE(VAR a : ADDRESS; size : CARDINAL); (* Free the area at address "a" with the given size. The area must have been allocated by "ALLOCATE", with the same size. *) PROCEDURE Deallocate(VAR a : ADDRESS; size : CARDINAL); (* Identical to DEALLOCATE *) PROCEDURE Available(size : CARDINAL) : BOOLEAN; (* Return TRUE if a contiguous area with the given size could be allocated. Notice that this only indicates if an ALLOCATE of this size would succeed, and that it gives no indication of the total available memory. *) END Storage.