C++Puntatori intelligenti


Sintassi

  • 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, ...));

Osservazioni

Il C ++ non è un linguaggio gestito dalla memoria. La memoria allocata dinamicamente (cioè gli oggetti creati con new ) sarà "trapelata" se non è esplicitamente deallocata (con delete ). È responsabilità del programmatore assicurarsi che la memoria allocata dinamicamente venga liberata prima di scartare l'ultimo puntatore a quell'oggetto.

I puntatori intelligenti possono essere utilizzati per gestire automaticamente l'ambito della memoria allocata dinamicamente (ovvero quando l'ultimo riferimento del puntatore esce dall'ambito viene cancellato).

Puntatori intelligenti sono preferiti su puntatori "grezzi" nella maggior parte dei casi. Rendono esplicita la semantica della proprietà della memoria allocata dinamicamente, comunicando nel suo nome se un oggetto è destinato a essere condiviso o di proprietà esclusiva.

Usa #include <memory> per poter usare puntatori intelligenti.

Puntatori intelligenti Esempi correlati