-- Shows exhausting the heap
with Text_IO; use Text_IO;
with System.Address_Image;
with Ada.Exceptions; use Ada.Exceptions;
procedure exhheap is
count : Natural := 0;
type bigarray is array (1 .. 10_000) of integer;
type bap is access bigarray;
bp : bap := new bigarray;
begin
put_line("Address of bp: " & System.Address_Image(bp.all'address));
loop
bp := new bigarray;
count := count + 1;
end loop;
exception
when e: others =>
put_line (exception_name (e) & ": " & exception_message (e));
put_line ("Count: " & count'img);
put_line("Address of bp: " &
System.Address_Image(bp.all'address));
end exhheap;
-- Address of bp: 0807F008
-- STORAGE_ERROR: heap exhausted
-- Count: 80377
-- Address of bp: BFF57310