| 12345678910111213141516171819 |
- MODULE StorageProg;
- (* Storage.ALLOCATE/DEALLOCATE with a typed pointer variable,
- plus ADR and SIZE builtins. Exit 42. *)
- FROM Storage IMPORT ALLOCATE, DEALLOCATE;
- TYPE P = RECORD x, y : INTEGER END;
- TYPE PP = POINTER TO P;
- VAR ExitCode : INTEGER;
- VAR p : PP;
- BEGIN
- ALLOCATE(p, SIZE(p^));
- p^.x := 30;
- p^.y := 12;
- IF ADR(p^.x) # NIL THEN
- ExitCode := p^.x + p^.y
- ELSE
- ExitCode := 0
- END;
- DEALLOCATE(p, SIZE(p^))
- END StorageProg.
|