Ich weiß ja, dass ich nicht grad der hellste bin
.
Warte, was? Es war nicht meine Absicht, irgendetwas in diese Richtung anzudeuten...
Aber prinzipiell ist ja die Einsicht, dass man ständig Fehler macht, eine gute. Kein guter Programmierer hier würde widersprechen, dass ihm/ihr das nicht auch täglich passiert. Genau deswegen ist es ja so nützlich, wenn der Compiler dir helfen kann, deine Fehler zu finden.
Die Idee ist folgende: Du hältst dich beim Schreiben deines Codes an ein paar wenigen Stellen an ein paar einfache Regeln (hauptsächlich die oben verlinkten), und der Compiler meckert dann an jeder Stelle, wo du potentiell etwas falsch machst. Am Anfang ist es vielleicht schwer die Fehler zu verstehen, aber du kannst ja auch hier nachfragen.
Hier noch ein deutscher Artikel zum Einstieg:
https://www.heise.de/developer/artikel/C…er-3919901.html
Der Vorteil ist übrigens, dass du nicht nur Leaks verhinderst, sondern ganz allgemein dein Code sinnvoller strukturiert sein wird. Es stimmt zwar, dass Dinge die move-Semantik (Objekte verschieben, statt sie zu kopieren) für den Anfang recht viel sein können, aber pff, dann schreibt man eben ein paar kleine Programme um das erstmal zu üben und zu verstehen. Dass du "zu dumm" dazu bist, glaub ich dir erst, wenn du es ernsthaft versucht hast, vorher will ich so Ausreden nicht hören
Ansonsten: Man kann Speicherfehler zum Beispiel mit
https://drmemory.org/ finden. Aber ich benutze das eigentlich nur für die richtig kniffeligen Fehler, weil es jetzt auch nicht gerade einfach zu verwenden ist.
Zu guter Letzt: Memory Leaks sind natürlich absolut kein guter Stil, andererseits können sie auch oft einfach sehr egal sein. Spätestens wenn dein Programm beendet wird räumt das Betriebssystem eh wieder auf. Problematisch ist es nur, wenn du ständig neuen Speicher beanspruchst und irgendwann der RAM voll ist und dein Programm im Dauerbetrieb irgendwann abstürzt. Aber wenn es z.B. um sowas geht wie "beim Wechsel ins nächste Level wird das vorherige nicht freigegeben" und ein Level nur ein paar MB im Speicher benötigt und niemand viertausend Level in einer Sitzung spielt, kann das genau so gut vollständig konsequenzlos bleiben, diesen Speicher nicht wieder freizugeben. Natürlich bist du kein 'guter Programmierer' wenn du sowas mit Absicht tust, aber was ich schon ok fände wäre, sich des Problems bewusst zu sein, es dann aber ganz hinten auf die TODO Liste zu setzen, weil es momentan halt wichtigeres gibt.