Das Prinzip um welches ist geht ist
RAII. Guck dir den Wikipedia Artikel einfach mal an und dir sollte klar werden worum es geht und was das soll. Um das jetzt zu erreichen sind zum Beispiel Klassen wie std::vector ziemlich praktisch, da diese genau dieses Prinzip umsetzen. Die dynamische Speicherallokation und die Freigabe wird in die Klasse gekapselt. Smart Pointer sind Klassen die dieses Prinzip auf Zeiger übertragen. Da gibt es dann allerlei verschiedene Smart Pointer für verschiedene Anwendungsfälle. In fast allen Fällen wirst du std::unique_ptr benötigen. Dies ist eine Klasse die einen Zeiger kapselt und keinen Kopierkonstruktor besitzt. Der Zeiger darf nicht kopiert werden und somit ist er nur 1 mal vorhanden. Man muss sich also um Besitz Gedanken machen. An welcher Stelle wird der Zeiger gespeichert und wer besitzt ihn dadurch am Ende. Versuch einfach möglichst keine normalen Zeiger zu verwenden sondern immer auf Smart Pointer zurück zu greifen. Dann gewöhnst du dir direkt einen saubereren Stil an. Zusätzlich interessant ist, du darfst den Zeiger zwar nicht kopieren da ansonsten zwei Besitzer auf den selben Speicher zeigen würden, du darfst ihn aber verschieben. Und hier kommt move ins spiel. Du kannst zum Beispiel eine Funktion schreiben die einen std::unique_ptr erzeugt und zurück gibt. Beim zurück geben rufst du std::move auf und somit wird der Verschiebekonstruktor dabei genutzt. Dadurch verschiebst du den Zeiger dann aus der Funktion zum Aufrufer. Das heißt, Smartpointer sind an sich auch eine schöne Sache um sich mal mit move auseinander zu setzen. Hier siehst du erst mal wie du das ganze verwendest. Danach kannst du dann mal gucken wie du selbst Verschiebekonstruktoren implementierst.
Schlagworte die du suchen kannst:
RAII,
std::vector,
std::unique_ptr,
std::make_unique,
std::move,
Kopierkonstruktor,
Verschiebekonstruktor
Damit solltest du dich erst mal ein wenig beschäftigen können. Ansonsten geht es aber einfach darum ein sauberes Prinzip beim Entwickeln zu nutzen. Du solltest also versuchen zu verstehen was das ganze soll und danach versuchst du es einfach zu benutzen. Das macht am Anfang sicherlich ein paar kleinere Probleme, wird aber schnell in Fleisch und Blut übergehen.