Man sollte nochmal festhalten, dass "low-level" nicht bedeutet, dass man delete händisch aufruft. Das hat überhaupt nichts damit zu tun. Ich würde dir raten, einfach mal deinen eigenen Smartpointer zu schreiben. Allerdings richtig, solange du eine Methode aufrufen musst um den Speicher freizugeben, hast du nichts besser gemacht als wenn du einfach direkt delete aufrufen würdest. Der Trick ist eben gerade, dass das delete im Destruktor des Smartpointers aufgerufen wird und der Smartpointer selbst nur einen Pointer enthält und am Stack angelegt wird. Dann stellt nämlich der Compiler sicher, dass das delete immer und unter allen Umständen aufgerufen wird, ohne dass du dich darum kümmern musst. Und genau in solchen Dingen liegt die wahre Macht von C++, nämlich dass du dir so einen Mechanismus bauen kannst ohne die Möglichkeit zur "low-level" Programmierung aufzugeben und der generierte Code ist, wenn du's richtig machst, trotzdem mindestens gleich effizient als wenn du selbst überall delete hingeschrieben hättest, da der Compiler alles inlinen wird. Smartpointer und RAII im Allgemeinen hindern einen nicht an der "low-level" Programmierung, sie unterstützten einen dabei...