Avatar ·

Was ist ein Smart Pointer und wann sollte man ihn verwenden?

Hallo zusammen! Ich habe vor kurzem angefangen, C++ zu lernen, und habe ständig Probleme mit der Speicherverwaltung. Besonders Speicherlecks und hängende Pointer machen mir Angst. Zum Beispiel schreibe ich oft solchen Code:\n\n```cpp\nclass MyClass {\npublic:\n int* data;\n MyClass() { \n data = new int(42); \n }\n ~MyClass() { \n delete data; \n }\n};\n\nvoid example() {\n MyClass* obj = new MyClass();\n // ... irgendein Code, der eine Exception werfen könnte\n delete obj;\n}\n```\n\nDas Problem ist, dass wenn zwischen `new` und `delete` eine Exception auftritt oder ich vergesse, `delete` aufzurufen, Speicher leckt. Und wenn jemand das Objekt vorzeitig löscht, ich es aber weiterhin verwende, stürzt das Programm ab.\n\nIch habe gehört, dass es in C++11 „Smart Pointer“ gibt, die diese Probleme lösen sollen.