C++Intelligente Zeiger


Syntax

  • std::shared_ptr<ClassType> variableName = std::make_shared<ClassType>(arg1, arg2, ...);
  • std::shared_ptr<ClassType> variableName (new ClassType(arg1, arg2, ...));
  • std::unique_ptr<ClassType> variableName = std::make_unique<ClassType>(arg1, arg2, ...); // C ++ 14
  • std::unique_ptr<ClassType> variableName (new ClassType(arg1, arg2, ...));

Bemerkungen

C ++ ist keine speicherverwaltete Sprache. Dynamisch zugewiesener Speicher (dh Objekte, die mit new ) wird "durchgesickert", wenn er nicht explizit freigegeben wird (mit delete ). Es liegt in der Verantwortung des Programmierers, sicherzustellen, dass der dynamisch zugewiesene Speicher freigegeben wird, bevor der letzte Zeiger auf das Objekt gelöscht wird.

Mithilfe von intelligenten Zeigern kann der Umfang des dynamisch zugewiesenen Speichers automatisch verwaltet werden (dh, wenn der letzte Zeigerverweis seinen Gültigkeitsbereich verlässt).

Intelligente Zeiger werden in den meisten Fällen gegenüber "rohen" Zeigern bevorzugt. Sie machen die Eigentümersemantik dynamisch zugewiesenen Speichers explizit, indem sie in ihren Namen mitteilen, ob ein Objekt gemeinsam genutzt werden soll oder in eindeutigem Besitz ist.

Verwenden Sie #include <memory> , um intelligente Zeiger verwenden zu können.

Intelligente Zeiger Verwandte Beispiele