Ben B. schrieb:
Hihi, wegen sowas verwenden fast alle meine
Nicht-Interpretersprachen-Programme eine Art Backup-Lösung: der
komplette für Variablen reservierte Speicher wird beim Start mit 0x00
überschrieben. Falls man dann sowas mal vergisst, hat man einen
doppelten Boden. Das mache ich sogar bei µCs, auf denen größere
Programme laufen sollen, beim Start oder Reset wird das komplette RAM
gelöscht.
Für globale Variablen wird das bereits gemacht, sofern der Startup-Code nicht kaputt ist. Hier geht es aber um eine lokale Variable. Wenn da vor der Funktion schon was auf dem Stack war, sind die Nullen teilweise schon überschrieben worden.
Rainer W. schrieb:
Eine Division durch 0 funktioniert nun mal nicht. Stark schwankende
Ergebnisse entstehen bei schlecht konditionierten Algorithmen, die dann
sehr empfindlich auf Rauschen reagieren.
Was für Rauschen? Das Programm nimmt keinerlei Daten von außen entgegen.
900ss D. schrieb:
Roland F. schrieb:
"warning: 'a' is used uninitialized in this function [-Wuninitialized]"
Soweit ich mich richtig erinnere, macht GCC den Check nur wenn auch der
Optimierer eingeschaltet ist. Sonst nicht.
Das liegt daran, dass der Optimierer eine Codefluss-Analsyse macht, um zu erkennen, was er schon zur Compilezeit ausrechnen kann.
Stefan F. schrieb:
Die Option -Wall sollte man nach Möglichkeit immer benutzen und auch
alle monierten Stellen in Ordnung bringen.
-Wall -Wextra -pedantic ist für mich das Minimum.
Ich empfehle die QtCreator IDE, die erkennt viele potentielle Fehler
schon vor dem Compilieren.
Das können eigentlich alle vernünftigen Editoren/IDEs heutzutage mit dem passenden Language Server.