FAGPORTALEN

Pointere og dynamisk hukommelse

Computerspace · FGU · Programmering i C++

🔐 Hvad er pointere og dynamisk hukommelse?

Pointere er en af C++'s mest kraftfulde og udfordrende features. En pointer gemmer adressen på et andet objekt i hukommelsen.

Grundlæggende pointer-syntax:

```cpp

int alder = 19;

int* ptr = &alder; // ptr peger på adressen til alder

std::cout << alder; // 19 (selve værdien)

std::cout << &alder; // 0x7fff... (adressen)

std::cout << ptr; // 0x7fff... (adressen ptr gemmer)

std::cout << *ptr; // 19 (dereferencing: værdien på adressen)

*ptr = 25; // Ændr værdien via pointeren

std::cout << alder; // 25

```

Stack vs. Heap:

```cpp

// Stack – automatisk styret

int x = 10; // Oprettes og slettes automatisk

// Heap – manuel styring

int* p = new int(42); // Allokér hukommelse på heap

std::cout << *p; // 42

delete p; // VIGTIGT: Frigiv hukommelsen!

p = nullptr; // Sæt til nullptr efter delete

```

Memory leaks:

```cpp

// BAD: Memory leak – glemmer delete

void badFunction() {

int* p = new int(10);

// Glemmer: delete p;

} // p slettes, men hukommelsen på heap ikke!

// GOOD: Husk altid delete

void goodFunction() {

int* p = new int(10);

// ... brug p ...

delete p;

}

```

Smart pointers – moderne løsning (C++11):

```cpp

#include <memory>

// unique_ptr – ét ejerskab

std::unique_ptr<int> p = std::make_unique<int>(42);

// Sletter automatisk når p går ud af scope!

// shared_ptr – delt ejerskab

std::shared_ptr<int> sp = std::make_shared<int>(100);

```

---

🎓 Læringsmål for Pointere og dynamisk hukommelse

Læringsmål

Sådan kan du arbejde med emnet

⚠️ Typiske fejl at undgå

---

💡 Tips til at komme i gang

Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.

Prøv Fagportalen gratis

🤖 Denne side er skrevet med kunstig intelligens og fagligt gennemgået af Fagportalen, som har det redaktionelle ansvar. Finder du en fejl, så skriv til support@fagportalen.dk.