Data update

This commit is contained in:
Ingy döt Net 2026-04-30 12:34:36 -04:00
parent 4bb20c9b71
commit cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions

View file

@ -0,0 +1,5 @@
declare
X : Integer; -- Allocated on the stack
begin
...
end; -- X is freed

View file

@ -0,0 +1,6 @@
declare
type Integer_Ptr is access Integer;
Ptr : Integer_Ptr := new Integer; -- Allocated in the heap
begin
...
end; -- Memory is freed because Integer_Ptr is finalized

View file

@ -0,0 +1,8 @@
declare
type Integer_Ptr is access Integer;
procedure Free is new Ada.Unchecked_Deallocation (Integer, Integer_Ptr)
Ptr : Integer_Ptr := new Integer; -- Allocated in the heap
begin
Free (Ptr); -- Explicit deallocation
...
end;

View file

@ -0,0 +1,3 @@
package P is
X : Integer; -- Allocated in the result the package elaboration
end P;

View file

@ -0,0 +1,15 @@
PROGRAM-ID. memory-allocation.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 based-data PIC X(20) VALUE "Hello, World!"
BASED.
PROCEDURE DIVISION.
*> INITIALIZED sets the data item to the VALUE.
ALLOCATE based-data INITIALIZED
DISPLAY based-data
FREE based-data
GOBACK
.

View file

@ -0,0 +1,13 @@
// allocate 2 uninitialized bytes & return a reference
mut p := unsafe { malloc(2) }
// p[0] = `h` // Error: pointer indexing is only allowed in `unsafe` blocks
unsafe {
p[0] = `h` // OK
p[1] = `i`
}
// p++ // Error: pointer arithmetic is only allowed in `unsafe` blocks
unsafe { p++ } // OK
if *p == `i` { println((*p).ascii_str()) } else { println("`*p` is not `i`") }
unsafe { free(p) }
exit(0)