Was sind die größten C++ Fehler aus eurer Praxis?



  • Hallo,

    was sind so die größten C++ Fehler, die ihr bei jemanden gesehen habt oder die ihr selbst in der Praxis gemacht habt?



  • @CppConst Wann ist denn ein Fehler größer als ein anderer?



  • Wenn er mehr Schaden anrichten kann.



  • Was heißt "C++ Fehler"? Fehler im Sprachdesign?
    Oder Fehler, die jemand mit C++ gemacht hat?

    Ist das relevant? Anfänger machen nun mal Fehler, das gehört dazu. Das interessiert aber natürlich nicht wirklich.

    Die schlimmsten Fehler/Probleme bei uns in den letzten 10 Jahren waren denke ich Heap Corruptions, Multi-Threading und Timing Probleme. Das ist jetzt aber nichts C++-spezifisches, vor allem die letzten beiden überhaupt nicht.

    Was ich noch als typische C++ Probleme sehen würde, wäre sowas wie type punning und strict aliasing, da ist z.B. auch Qt drauf reingefallen (war aber vor meiner Zeit):

    https://www.qt.io/blog/2011/06/10/type-punning-and-strict-aliasing



  • Da muss ich wohl meine Frage etwas konkretisieren. Mich interessieren Fehler die ihr im Zusammenhang mit C++ gemacht habt, z.B. rohe Zeiger verwendet anstelle von Smartpointern, obwohl nicht nötig. Oder const correctness nicht eingehalten usw. Es gibt ja so viele Core Guidelines etc. die man beachten sollte.

    Meine Motivation hinter der Frage ist es C++ besser kennen zu lernen und die schlimmsten Fallstricke zu umgehen und dachte mir, vielleicht interessiert das auch andere.



  • @Mechanics sagte in Was sind die größten C++ Fehler aus eurer Praxis?:

    Multi-Threading und Timing Probleme. Das ist jetzt aber nichts C++-spezifisches, vor allem die letzten beiden überhaupt nicht.

    Killed By A Machine: The Therac-25



  • Was ich live erlebt habe war eine Notbremsung von 25 Zügen wegen eines Fehlers in der Signalsteuerung. War zum Glück nicht mein Fehler.



  • Ist jetzt zwar nur ein kleinerer Fehler, der aber schon öfter passiert ist: std::accumulate eines std::vector<double> mit Initialwert von 0. Glücklicherweise warnt clang-tidy inzwischen davor. Aber das ist wirklich verdammt leicht, da einen Fehler einzubauen. Bei einer manuellen Loop tritt dieses Problem nicht auf. Ich weiß auch gar nicht, ob ich accumulate wirklich mag. Das ganze Gerausche mit begin/end verdeckt so ein bisschen das eigentliche Vorgehen. Man sollte stattdessen sowas wie mystd::sum(Range rng) haben.


Log in to reply