Zugriffsverletzung |
31.05.2013, 15:56 | Auf diesen Beitrag antworten » | |||||
kein_plan | Zugriffsverletzung Meine Frage: Hallo, ich hab folgendes Programm geschrieben, das den Sinus durch ein Taylopolynom berechnet und im Intervall [-2;2] die maximale Differenz dieser Approximation zum vorimplementierten Sinus in math.h bestimmen soll:
Wenn ich das Programm ausführe kommt jedoch folgende Fehlermeldung: Unbehandelte Ausnahme bei 0x774216B3 (msvcr110d.dll) in Blatt_7_2_2.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x3CB00000 Meine Ideen: Woran liegt das? Ich glaube, es muss an der for-Schleife (Zeilen 24 - 26) liegen. Denn wenn ich die aus dem Code rausnehme, gibt es keinen Fehler beim Ausführen des Programms. |
|||||
|
||||||
31.05.2013, 16:11 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Die Logik dahinter habe ich mir noch nicht angeschaut, aber der Fehler ist: printf("... vom Grad %i beträgt %d....", GRAD, sup, ...); sup ist ein double, du willst es aber mit %d ausgeben. |
|||||
31.05.2013, 16:19 | Auf diesen Beitrag antworten » | |||||
kein_plan | Stimmt, das habe ich wohl übersehen. Aber wenn ich die komplette for-Schleife weglasse, funktioniert es. Warum? sup ist doch dann trotzdem eine double-Variable. Liegt es daran, dass der Wert von sup dann 0 ist?
Was meinst du damit? |
|||||
31.05.2013, 16:31 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Warum es ohne die for-Schleife funktioniert, kann ich dir leider nicht beantworten - mit Visual Studio funktioniert es auch mit Schleife und fehlerhafter Ausgabe. Mit der Logik dahinter meinte ich die Funktion sinus_taylor, die ausgegebenen Werte passen aber - ist nur extrem unleserlich. Etwas leserlicher und trotzdem effizient in der Laufzeit:
|
|||||
Anzeige | ||||||
|
||||||
31.05.2013, 16:42 | Auf diesen Beitrag antworten » | |||||
kein_plan |
Ich hab ja mit Visual Studio kompiliert, und da gab es diese Fehlermeldung. Die Funktion sinus_taylor lasse ich, glaube ich, so. In der Vorlesung haben wir das mit der e-Funktion so ähnlich gemacht. Etwas unleserlich ist es schon. Aber wenigstens kommen die richtigen Werte raus. Mal noch eine Frage zu Visual Studio: Wenn ich das kompiliert habe, wird ja eine exe-Datei erstellt. Beim nächsten Kompilieren kommt dann die folgende Fehlermeldung: fatal error LNK1168: "C:\Users\Su\documents\visual studio 2012\Projects\Blatt_7_2_2\Debug\Blatt_7_2_2.exe" kann nicht zum Schreiben geöffnet werden. Wenn ich die exe wieder lösche, kann ich danach wieder kompilieren. Allerdings nur einmal: Dann kommt wieder das gleiche Problem. Weißt du auch, woran das liegt? |
|||||
31.05.2013, 16:55 | Auf diesen Beitrag antworten » | |||||
kein_plan | Übrigens: Wenn ich ein paar Minuten warte, geht es wieder von alleine, ohne, dass ich die alte exe-Datei löschen muss. |
|||||
31.05.2013, 16:57 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Nochmal getestet: Visual Studio 2010 führt das Programm aus, Visual Studio 2012 und der gcc verursachen einen Absturz. Zum Linkerfehler: ist mir noch nicht untergekommen, möglicherweise ist das Programm nicht richtig beendet worden, kann auch mit dem Virenscanner zusammenhängen. |
|||||
31.05.2013, 17:01 | Auf diesen Beitrag antworten » | |||||
kein_plan | Ich hab Visual Studio 2012. Das Programm beende ich, indem ich in Visual Studio auf den Button "Debugging beenden" klicke (oder Umschalt+F5). Also sollte es ja dann richtig beendet sein, oder? Und das Virenprogramm möchte ich auch nicht abschalten. |
|||||
31.05.2013, 17:09 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl |
Weiß ich, ging aus deiner Fehlermeldung hervor "Debugging beenden" ist richtig, aber trotzdem glaube ich, dass es nicht ganz beendet wurde, warum sonst der fehlende Schreibzugriff... Was du hier beschreibst klingt sehr ähnlich wie das hier. |
|||||
31.05.2013, 17:23 | Auf diesen Beitrag antworten » | |||||
kein_plan | Ja, das scheint das selbe Problem zu sein. Da gehts auch um das Virenprogramm, das ich nutze. Ich gucke mal, ob/wie ich bei meinem Virenprogramm Ausnahmen festlegen kann. Vielen Dank, dass du mir (mal wieder) so super geholfen hast! |
|