Zeiger können schneller sein und weniger Overhead verursachen, sowohl in Datenstrukturen als auch bei der Reduzierung des Programmausführungs-Footprints. (Bitte beachten Sie das Wort "kann".)
Im Allgemeinen lautet die Regel: Wenn Sie eine Ressource zugewiesen haben, indem Sie entweder Ihre eigene Zuweisung vorgenommen haben oder etwas in Ihrem Namen ausführen lassen, ist es Ihre Aufgabe, sie freizugeben, wenn Sie fertig sind.
Die Last der oben genannten Aufgaben besteht darin, die Verantwortung wieder auf den Entwickler zu übertragen, anstatt sie von der Laufzeit ausführen zu lassen. Dies hat einige weitere Vorteile, da Dinge länger leben oder Grenzen überschreiten oder zu günstigeren Zeiten entsorgt werden können oder nicht das Gewicht eines Müllsammlers tragen müssen.
In exotischen Fällen, die normalerweise Ausnahmen und Umfang beinhalten, gibt es einige Randfälle, bei denen man etwas vorsichtiger sein muss, wenn der Code, der bereinigt wird, vermieden wird. Realistisch gesehen können diese Fälle umgestaltet werden. Wir haben viele Jahrzehnte ohne verwalteten Code gelebt.
Was Zeiger oft "schwer" macht, ist einfach nicht zu verstehen, was auf Hardwareebene vor sich geht. Es ist nichts weiter als Indirektion.
Zeiger bieten Ihnen viel mehr Zugriff, und dies kann sehr hilfreich, clever oder notwendig sein. Sie können überall hin zeigen und es so ziemlich wie alles behandeln. Wenn Sie Ihre gottähnlichen Kräfte zum Guten einsetzen, ist das sehr, sehr gut.
Die Gegenseite ist normalerweise eine Verschwendung, wenn Sie vergessen, etwas freizugeben, oder indem Sie es mehrmals freigeben oder auf etwas verweisen, nachdem es freigegeben wurde, oder wenn Sie etwas verweisen, wenn Sie nicht auf etwas zeigen. Diese Dinge führen oft zu spektakulären Abstürzen, und um ehrlich zu sein, deuten sie normalerweise darauf hin, dass Sie ein logisches Problem haben, anstatt dass Zeiger zerbrechlich sind.
Wenn Sie ein solider Entwickler sind, sollte die Verwendung von Zeigern nicht problematischer sein als jede andere Datenstruktur. Auch hier ist es keine Raketenwissenschaft, und die Leute haben es jahrzehntelang getan, ohne ein Auge zu blinzeln. Es wird heutzutage nur weniger gründlich gelehrt.
Abgesehen davon macht die Konveinenz und die exoitischen Fälle, die eine gute Speicherbereinigung bietet, die Arbeit in einer verwalteten Umgebung umso angenehmer, es sei denn, Sie benötigen Zeiger. Es ist großartig, etwas Speicher abrufen, verwenden und aufgeben zu können, da man weiß, dass es zu einem späteren Zeitpunkt möglicherweise verworfen wird, wenn dies sinnvoll ist. Das ist ein bisschen weniger Code seitens des Codierers im Austausch für eine Laufzeit, die etwas mehr Heben bewirkt.