Ich wollte einfach mal zur Unterhaltung eine Gruselgeschichte aus meinem Arbeitsleben erzählen.
Ich habe eine Änderung in einem Programmbereich vorgenommen, den ich eigentlich nie angefasst habe. Als ich beim Testen der Änderung das Programm schloss, bekam ich die Meldung über mehrere Speicherleaks.
Jetzt zum gruseligen Teil, was ein Vorgänger gemacht hat
Er hat ein Kontextmenü im Code aufgebaut, wo er jedem Menüeintrag 3 Integerwerte mitgeben wollte. Natürlich sind diese 3 Werte Magic Numbers - also Nummern, die auf magische Weise irgendwas machen und wo man ohne größere Recherche nicht herausfinden kann, was das für Nummern sind und was sie tun sollen. Das liegt auch daran, dass die einzelnen Nummern beim späteren auseinandernehmen des Strings in Variablen gepackt werden, die je mit einem Buchstaben benannt sind. Diese 3 Nummern hat er dann kommasepariert in einen String gepackt. Dann hat er Pointer auf diese Strings in die Tags der Menüeinträge gepackt. Damit die Strings aber nach dem Verlassen der Gültigkeitsbereiche nicht freigegeben werden, hat er den Speicher manuell reserviert. Diesen Speicher hat er aber nie wieder freigegeben...
Wie kann man nur so viele schreckliche Dinge gleichzeitig in eine einzige Mechanik einbauen?