Sobes.tech
Middle

Was ist der Unterschied zwischen einem Smart Pointer und einem normalen Zeiger in C++?

sobes.tech KI

Antwort von AI

Ein gewöhnlicher Zeiger in C++ ist einfach eine Adresse im Speicher, die die Lebensdauer des Objekts nicht verwaltet. Der Programmierer ist selbst verantwortlich für die Zuweisung und Freigabe des Speichers, was zu Speicherlecks oder Doppel-Freigabe-Fehlern führen kann.

Ein intelligenter Zeiger ist eine Wrapper-Klasse, die die Lebensdauer des Objekts automatisch verwaltet. Zum Beispiel besitzt std::unique_ptr das Objekt und löscht es, wenn der Zeiger den Gültigkeitsbereich verlässt. std::shared_ptr zählt die Referenzen und löscht das Objekt, wenn der letzte Zeiger zerstört wird.

Beispiel mit std::unique_ptr:

#include <memory>

void beispiel() {
    std::unique_ptr<int> ptr = std::make_unique<int>(42);
    // ptr löscht das Objekt automatisch beim Verlassen der Funktion
}

Auf diese Weise helfen intelligente Zeiger, Speicherlecks und Ressourcenmanagement-Fehler zu vermeiden, was den Code sicherer und einfacher macht.