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 an area with the given size could be allocated. *) END Storage.