====== std.alloc ====== Direkte Speicherverwaltung auf Heap-Ebene ohne externe Abhängigkeiten. ''malloc'', ''calloc'' und ''realloc'' arbeiten mit 8-Byte-Alignment (64-Bit-kompatibel) direkt über ''libc_malloc''. ''malloc_safe'' gibt 0 zurück bei OOM; ''malloc_orpanic'' beendet das Programm mit einem Fehlercode. Die Unit ist die Grundlage aller dynamischen Datenstrukturen in der Standardbibliothek. Einsatzbereiche: systemnahe Lyx-Programme, alle Units die dynamisch Speicher verwalten (Listen, Puffer, Strings), sowie eigene Allokatorimplementierungen. **Autor:** Andreas Röne\\ **Copyright:** 2024-2025 Andreas Röne ---- ==== Konstanten ==== ^ Name ^ Typ ^ Wert ^ Sichtbarkeit ^ | ''ALIGNMENT'' | ''int64'' | ''8'' | pub | | ''ERR_ALLOC_OK'' | ''int64'' | ''0'' | pub | | ''ERR_ALLOC_OOM'' | ''int64'' | ''1'' | pub | | ''ERR_ALLOC_INVALID'' | ''int64'' | ''2'' | pub | | ''ERR_ALLOC_ALIGN'' | ''int64'' | ''3'' | pub | ---- ==== Externe Funktionen ==== ^ Signatur ^ Beschreibung ^ | ''libc_malloc(size: int64): int64'' | Allociert Rohspeicher über libc-Heap | | ''libc_free(ptr: int64): int64'' | Gibt libc-Heapspeicher frei | | ''libc_realloc(ptr: int64, size: int64): int64'' | Vergrößert oder verkleinert Heapblock | ---- ==== Funktionen ==== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''align_to_8(size: int64): int64'' | priv | Rundet Größe auf 8-Byte-Grenze auf | | ''malloc(size: int64): int64'' | pub | Allociert ausgerichteten Heapspeicher | | ''calloc(count: int64, elem_size: int64): int64'' | pub | Allociert nullinitialisierten Speicherblock | | ''free_mem(ptr: int64): int64'' | pub | Gibt Heapblock frei | | ''realloc_mem(ptr: int64, new_size: int64): int64'' | pub | Ändert Größe eines Heapblocks | | ''size_of_int64(): int64 { return 8; }'' | pub | Gibt Byte-Größe von int64 zurück | | ''size_of_ptr(): int64 { return 8; }'' | pub | Gibt Byte-Größe eines Zeigers zurück | | ''is_aligned(ptr: int64): bool'' | pub | Prüft 8-Byte-Ausrichtung des Zeigers | | ''malloc_safe(size: int64): int64'' | pub | Allociert Speicher, gibt 0 bei OOM | | ''malloc_orpanic(size: int64): int64'' | pub | Allociert Speicher oder beendet Programm |