// Test allocate and free main module ALLOCATE1 use TEXTIO use HEAPSTATE declare struct is structure Point : P A : packed array [1..10] of char Numb : integer // used 1751 pages when dummy 1..70 Dummy : packed array [1..100] of 8 bit integer endstructure p is pointer struct Last : p Next : p TOP : p enddeclare repeat Top := nil for I := 1 to 80 do Next := allocate P (A:"ALLOCATE N", Numb:I) if TOP = nil do TOP := Next otherwise Last@.Point := Next endif Last := Next out_string (TTY, Last@.A) out_string (TTY, " ") out_integer (TTY, Last@.numb) out_record (TTY) endfor out_record (TTY) HEAPSTATE () out_record (TTY) for I := 1 to 80 do Next := Top out_string (TTY, "Free ") out_integer (TTY, Next@.numb) out_record (TTY) Top := TOP@.point free (Next) endfor out_record (TTY) HEAPSTATE () out_record (TTY) until false // catch // case X_heap_empty: // out_string (TTY, "Heap Empty") // out_record (TTY) // endguard endmodule