IMPLEMENTATION MODULE Storage; (* Binds libc heap functions directly. *) PROCEDURE malloc(size : CARDINAL) : ADDRESS; EXTERNAL; PROCEDURE free(p : ADDRESS); EXTERNAL; PROCEDURE realloc(p : ADDRESS; size : CARDINAL) : ADDRESS; EXTERNAL; PROCEDURE ALLOCATE(VAR p : ADDRESS; size : CARDINAL); BEGIN p := malloc(size) END ALLOCATE; PROCEDURE DEALLOCATE(VAR p : ADDRESS; size : CARDINAL); BEGIN free(p); p := NIL END DEALLOCATE; PROCEDURE REALLOCATE(VAR p : ADDRESS; oldSize, newSize : CARDINAL); BEGIN p := realloc(p, newSize) END REALLOCATE; END Storage.