Veröffentlicht 23. März 201015 j Hallo allerseits, oftmals liest man hier, der Rückgabewert von malloc solle nicht gecastet werden und dass der explizite Cast sogar Fehler überdecken könnte. Das unnötige Casten ist leider auch in von mir geschriebenen Quelltexten durchgehend zu finden. Welche Fehler können denn dadurch verdeckt werden? Die Suche im Netz brachte mich diesbezüglich bisher nicht weiter. Bislang ging ich immer davon aus, der Cast sei nur unnötig, würde aber nicht schaden. Mich würde nun aber interessieren, ob ich nicht potentielle Schwachstellen in meine Programme eingebaut und mir dadurch das Leben unnötig schwer gemacht habe.
24. März 201015 j Es ist auch zu berücksichtigen, ob man mit C++ kompatibel sein will. In C++ nimmt man kein malloc, sondern new. :beagolisc
24. März 201015 j In C++ nimmt man kein malloc, sondern new. :beagoliscDann ist man aber nicht mehr kompatibel zu C Wenn man Code hat, der sowohl als C als auch als C++ compilierbar sein soll, dann muss man den Rückgabewert von malloc casten. Dann muss man aber auch noch etliche andere Dinge beachten.
24. März 201015 j Dann ist man aber nicht mehr kompatibel zu C Wenn man Code hat, der sowohl als C als auch als C++ compilierbar sein soll, dann muss man den Rückgabewert von malloc casten. Dann muss man aber auch noch etliche andere Dinge beachten. Ach, jetzt verstanden. :upps Warum sollte man denn sowas machen? Ich mein, selbst bei Laufzeitmessungen sollte man die sprachspezifischen Funktionen, Operatoren o.Ä. verwenden. Das kann man wunderbar mit Präprozessordirektiven oder libs/DLLs machen. An sich sind es, trotz syntaktischer Ähnlichkeit, ja unterschiedliche Sprachen, deswegen versteh ich den Sinn dahinter nicht wirklich...
24. März 201015 j Vielen Dank für die Antworten. Ausgerechnet bei Wikipedia habe ich überhaupt nicht gesucht Im Code konnte ich zwar keine "gefährlichen" Stellen entdecken, aber da keine Kompatibilität zu C++ notwendig und dies auch nicht zu erwarten ist, werde ich das beizeiten mal bereinigen.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.