Programmering
  1. Teori
  2. Data
  3. Hukommelse og pointers
  • Eksamen
  • Projektarbejde
  • Synopsis
  • Cheatsheets
    • Python cheatsheet
    • Rust cheatsheet
    • Kodningsplatforme
  • Opsætning
    • Git
    • Python
    • Rust
    • VScode
  • Teori
    • Arbejdsproces
      • Abstraktion
      • Fejlfinding
      • Generalisering
      • Git
      • Kommentarer
      • Moduler
      • Pakker
    • Data
      • Datastrukturer
      • Datatyper
      • Ejerskab og referencer
      • Enum
      • Hukommelse og pointers
      • Indkapsling
      • Polymorfi
      • Struct
    • Diagrammer
      • Brugerhistorier
      • Klassediagrammer
      • Rutediagrammer
      • Tegneprogrammer
    • Logik
      • Anonyme Funktioner
      • Fejlhåndtering
      • Grådig algoritme
      • Metaprogrammering
      • Samtidig programmering
  • Studieområdet
    • Forslag til emner
    • Empiri
    • Metoder i Programmering

På denne side

  • Pointers
  1. Teori
  2. Data
  3. Hukommelse og pointers

Hukommelse og pointers

Teori

Udgivet

30. marts 2026

Når et program startes bliver der afsat hukommelse til globale variabler (global/static storage) og selve koden til programmet (code/text storage).

Derudover kan programmet oprette data på stack og heap:

  • Stack bruges til lokale variabler og bliver automatisk ryddet op (LIFO: Last In First Out).
  • Heap er ikke begrænset til lokale variabler/LIFO og er dermed mere generel, men kræver mere at organisere (bl.a. allokering/deallokering).

I Rust klares de fleste heap udfordringer vha. ejerskab. Fejl som hukommelseslækage (memory leak) undgås derfor nemmere, men kan stadig forekomme se fx kap. 15.6.

Pointers

Bruges til at pege på et sted i hukommelse. [1] Referencer er en bestemt type af pointers.

Box og Rc er pointers der kan bruges til at allokere data på heap.

  • Box til normal ejerskab (1 ejer).
    • I modsætning til en reference så overdrager Box ejerskabet, hvilket er væsentligt i bl.a. funktioner.
  • Rc (Reference Count) bruges til flere ejere.
    • Er kun mutabel med flere ejere sammen med RefCell.
NoteEksempel
// Gemmer variabel og reference/pointer på stack
let a = 5;
let p1 = &a;

// Allokering på heap med smart pointers Box og Rc (pointers p2 & p3 gemmes i stack)
let mut p2 = Box::new(10); 
let p3 = Rc::new(15);

// For at lave om på værdien som p2 peger på bruges * - såkaldt dereference
*p2 += 1; 
Tilbage til toppen

Referencer

[1]
S. Klabnik og C. Nichols, “15. Smart Pointers”, i The Rust Programming Language, No Starch Press. Tilgængelig hos: https://doc.rust-lang.org/stable/book/ch15-00-smart-pointers.html

ZBC Slagelse HTX

Senest redigeret d. 30. marts 2026

JACS