Avatar ·

Was sind Smart Pointer und wann sollte man sie verwenden?

Hallo Kollegen! Ich programmiere noch nicht lange in C++, bin aber bereits auf das Problem von Speicherlecks gestoßen. Ich verwende bisher normale "rohe" Pointer (raw pointers) mit `new` und `delete`, vergesse aber ständig, `delete` aufzurufen, besonders wenn der Code mit Exceptions und frühen Returns überwuchert wird. Zum Beispiel: ```cpp void process() { Resource* res = new Resource(); // ... irgendein Code, der eine Exception werfen könnte ... delete res; // Wenn eine Exception auftritt, kommen wir hier nicht hin – Speicherleck! } ``` Ich habe von "Smart Pointern" in C++11 gehört, verstehe aber nicht ganz, was das ist. Im Internet gibt es viele Informationen, aber ich wünsche mir eine klare Erklärung: Was sind das für Dinger, wie unterscheiden sie sich von normalen Pointern, und in welchen Situationen sollte man sie tatsächlich einsetzen? Besonders interessieren mich `std::unique_ptr`, `std::s