unbenannt Geschrieben 23. März 2010 Geschrieben 23. März 2010 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. Zitieren
Guybrush Threepwood Geschrieben 23. März 2010 Geschrieben 23. März 2010 Wikipedia erklärt das ganz gut: malloc - Wikipedia, the free encyclopedia Zitieren
Bubble Geschrieben 23. März 2010 Geschrieben 23. März 2010 Es ist auch zu berücksichtigen, ob man mit C++ kompatibel sein will. Zitieren
TDM Geschrieben 24. März 2010 Geschrieben 24. März 2010 Es ist auch zu berücksichtigen, ob man mit C++ kompatibel sein will. In C++ nimmt man kein malloc, sondern new. :beagolisc Zitieren
Klotzkopp Geschrieben 24. März 2010 Geschrieben 24. März 2010 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. Zitieren
TDM Geschrieben 24. März 2010 Geschrieben 24. März 2010 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... Zitieren
unbenannt Geschrieben 24. März 2010 Autor Geschrieben 24. März 2010 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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.