1234567891011121314151617181920212223242526272829303132333435363738394041 |
- DEFINITION MODULE Storage;
- (*
- Module: Dynamic storage allocation
- From: "Programming in Modula-2", 3rd, corrected edition, by N. Wirth
- Version: $Id$
- *)
- (*
- 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.
|