Ich habe nach einem ähnlichen Beitrag zu mir ohne Erfolg gesucht. Ich arbeite mit einem Code, der bisher deterministisch zu sein scheint und jetzt richtig funktioniert. Wenn ich jedoch Valgrind memcheck darauf ausführe, erhalte ich Tausende von Warnungen, die sich auf "bedingter Sprung oder Bewegung hängt von nicht initialisiertem Wert" beziehen. Beim Verfolgen des Fehlers führt Valgrind die Rückverfolgung in die Funktionen brk und sbrk zurück. Ich verstehe nicht, warum das passiert, und vor allem, wie es zu beheben ist. Unterhalb eines Teils meines Codes.valgrind memcheck bedingter Sprung verfolgt es zurück zu brk und sbrk Funktionen
navSolutions->channel.satPositions = (fl64 **) calloc(3 , sizeof(fl64*));
ERRORCHECK(navSolutions->channel.satPositions == NULL)
navSolutions->channel.satPositionsOld = (fl64 **) calloc(3 , sizeof(fl64*));
ERRORCHECK(navSolutions->channel.satPositionsOld == NULL)
Es ist auch von Bedeutung, dass viele dieser Anrufe passieren, wenn für jeden der Zeiger I in den Speicher zuteilen free() aufrufen. Eine Hilfe wäre toll. Vielen Dank im Voraus
Als Teil der schnellen Antworten hier ist die zusätzliche Information angefordert: Hallo alle wieder, danke für die schnellen Antworten. Mein Code-Code wird in Linux Mint 17.2 Cinamon 64 Bit ausgeführt. Ich verwende auch die folgende Version von gcc (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.1) 4.8.4 und valgrind Version 3.10.1. Ich habe auch den Rat von Nate Eldredge ohne Erfolg ausprobiert. Hier sind einige der valgrind ouput
==25494== Conditional jump or move depends on uninitialised value(s)
==25494== at 0x4669D7: _int_malloc (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494== by 0x4695C5: calloc (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494== by 0x40C1F5: initNavSolution (initNavSolutions.c:57)
==25494== by 0x401714: nav_init (nav_init.c:35)
==25494== by 0x40107B: main (main.c:38)
==25494== Uninitialised value was created
==25494== at 0x4BA9CC: brk (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494== by 0x490C34: sbrk (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494== by 0x454793: __libc_setup_tls (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494== by 0x4543FD: (below main) (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
Dank alle im Voraus wieder
So sehen (einige von) die Valgrind Nachrichten würden auch helfen. – alk
Basierend auf Standard C glaube ich nicht, dass Sie sicher sein können, dass Ihr Array für alle NULL-Zeiger initialisiert wird; Es sind alle Bits Null, aber im Prinzip könnte der NULL-Zeiger eine andere Darstellung haben. Vielleicht ist das der Grund für die Warnung? Hilft es, wenn Sie nach dem Calloc eine explizite Schleife setzen, die jedes Element des zugewiesenen Arrays auf NULL setzt? –
Auf welcher Plattform beobachten Sie dieses Verhalten? – alk