From: prichtmyer@yahoo.com (Peter Richtmyer)
Subject: Allocating Memory with "new"
Date: 24 Apr 2003 12:30:46 -0700
Date: 2003-04-24T19:30:48+00:00 [thread overview]
Message-ID: <1b585154.0304241130.35fa0a97@posting.google.com> (raw)
I am stumped ...
My memory allocation scheme worked OK on Gnat / Win2K,
but on Sun Blade with Rational Ada it does not give me
what I expected. See after program for output.
I built a test program to illustrate my problem:
(forgive me, it is quick and ugly)
thanks
Peter
--------------------------------------------------------------
with system;
with system.address_to_access_conversions;
with Text_Io;
use text_io;
with unchecked_conversion;
procedure Hi is
first_time : boolean := true;
procedure alloc (nbytes : integer) is
type Mem_Block_T is array (1 .. Nbytes) of Character;
package Mem_Block_Ptr_Pkg is new
system.address_to_access_conversions (Mem_Block_T);
Mem_Block_Ptr : Mem_Block_Ptr_Pkg.Object_Pointer := null;
addr : system.address;
In_Work_Area : String (1 .. 12) := " ";
function Addr_to_int is new Unchecked_Conversion
(system.address, integer);
package data_io is new integer_io(integer);
begin
if first_time then
first_time := false;
put_line ("Mem_Block_Ptr_Pkg.Object_Pointer'size = " &
Integer'image(Mem_Block_Ptr_Pkg.Object_Pointer'size));
end if;
Mem_Block_Ptr := new Mem_Block_T;
Addr := Mem_Block_Ptr_Pkg.to_address (Mem_Block_Ptr);
Data_Io.Put (In_Work_Area, addr_to_int (addr), 16);
put_line ("allocated " & In_Work_Area);
end alloc;
begin
put_line ("system.address'size = " & Integer'image(system.address'size));
put_line ("integer'size = " & Integer'image(integer'size));
for i in 1 .. 10 loop
Put ("len 1: ");
alloc (1);
end loop;
for i in 1 .. 10 loop
Put ("len 8: ");
alloc (8);
end loop;
for i in 1 .. 50 loop
Put ("len" & integer'image(i * 8) & " : ");
alloc (i * 8);
end loop;
end Hi;
-- Rational Apex Ada on SUN Blade:
-- system.address'size = 32
-- integer'size = 32
-- len 1: Mem_Block_Ptr_Pkg.Object_Pointer'size = 32
-- allocated 16#F8A88#
-- len 1: allocated 16#F8A88#
-- len 1: allocated 16#F8A88#
-- len 1: allocated 16#F8A88#
-- len 1: allocated 16#F8A88#
-- len 1: allocated 16#F8A88#
-- len 1: allocated 16#F8A88#
-- len 1: allocated 16#F8A88#
-- len 1: allocated 16#F8A88#
-- len 1: allocated 16#F8A88#
-- len 8: allocated 16#F8A88#
-- len 8: allocated 16#F8A88#
-- len 8: allocated 16#F8A88#
-- len 8: allocated 16#F8A88#
-- len 8: allocated 16#F8A88#
-- len 8: allocated 16#F8A88#
-- len 8: allocated 16#F8A88#
-- len 8: allocated 16#F8A88#
-- len 8: allocated 16#F8A88#
-- len 8: allocated 16#F8A88#
-- len 8 : allocated 16#F8A88#
-- len 16 : allocated 16#F8A80#
-- len 24 : allocated 16#F8A78#
-- len 32 : allocated 16#F8A70#
-- len 40 : allocated 16#F8A68#
-- len 48 : allocated 16#F8A60#
-- len 56 : allocated 16#F8A58#
-- len 64 : allocated 16#F8A50#
-- len 72 : allocated 16#F8A48#
-- len 80 : allocated 16#F8A40#
-- len 88 : allocated 16#F8A38#
-- len 96 : allocated 16#F8A30#
-- continues decreasing by 8
-------------------------------------------------------
-- Gnat 3.15P on Win2000 (OK)
--system.address'size = 32
--integer'size = 32
--len 1: Mem_Block_Ptr_Pkg.Object_Pointer'size = 32
--allocated 16#2602450#
--len 1: allocated 16#2602520#
--len 1: allocated 16#2602538#
--len 1: allocated 16#2602550#
--len 1: allocated 16#2602568#
--len 1: allocated 16#2602580#
--len 1: allocated 16#2602598#
--len 1: allocated 16#26025B0#
--len 1: allocated 16#26025C8#
--len 1: allocated 16#26025E0#
--len 8: allocated 16#26025F8#
--len 8: allocated 16#2602610#
--len 8: allocated 16#2602628#
--len 8: allocated 16#2602640#
--len 8: allocated 16#2602658#
--len 8: allocated 16#2602670#
--len 8: allocated 16#2602688#
--len 8: allocated 16#26026A0#
--len 8: allocated 16#26026B8#
--len 8: allocated 16#26026D0#
--len 8 : allocated 16#26026E8#
--len 16 : allocated 16#2602700#
--len 24 : allocated 16#2602718#
--len 32 : allocated 16#2602740#
--len 40 : allocated 16#2602768#
--len 48 : allocated 16#26027A0#
--len 56 : allocated 16#26027D8#
--len 64 : allocated 16#2602820#
--len 72 : allocated 16#26039C8#
--len 80 : allocated 16#2603A20#
--len 88 : allocated 16#2603A78#
--len 96 : allocated 16#2603AE0#
--len 104 : allocated 16#2603B48#
--len 112 : allocated 16#2603BC0#
--len 120 : allocated 16#2603C38#
--len 128 : allocated 16#2603CC0#
--len 136 : allocated 16#2603D48#
next reply other threads:[~2003-04-24 19:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-24 19:30 Peter Richtmyer [this message]
2003-04-25 6:05 ` Allocating Memory with "new" Vincent Smeets
2003-04-25 10:33 ` Peter Richtmyer
2003-04-25 15:09 ` Stephen Leake
-- strict thread matches above, loose matches on Subject: below --
2003-04-25 12:46 David C. Hoos
2003-04-25 22:19 ` Peter Richtmyer
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox