Array global nutzen



  • Scheint nun richtig gut zu laufen, leider tritt beim Clustern noch ein Problem samt Absturz auf:

    "Auto Chrom.exe": "D:\Auto Chrom\Debug\Auto Chrom.exe" geladen, Symbole wurden geladen.
    "Auto Chrom.exe": "C:\WINDOWS\system32\ntdll.dll" geladen, Cannot find or open the PDB file
    "Auto Chrom.exe": "C:\WINDOWS\system32\kernel32.dll" geladen, Cannot find or open the PDB file
    "Auto Chrom.exe": "C:\WINDOWS\system32\msvcp100d.dll" geladen, Symbole wurden geladen.
    "Auto Chrom.exe": "C:\WINDOWS\system32\msvcr100d.dll" geladen, Symbole wurden geladen.
    Eine Ausnahme (erste Chance) bei 0x0041165b in Auto Chrom.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x015c8a98.
    Unbehandelte Ausnahme bei 0x0041165b in Auto Chrom.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x015c8a98.
    Das Programm "[552] Auto Chrom.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.

    Irgendeine Lösungsidee?
    Selbst mit 2x zwei forschleifen tritt das Problem auf.
    (in einer wird der Mittelwert berechnet, und ganz danach erst der Mittelwert in das alte Feld geschrieben.)



  • Na sagt doch schon die Fehlermeldung, du schreibst über den reservierten Speicher hinaus, oder zumindest auf eine Adresse die du nicht Reserviert hast. Also wirst du schauen müssen an welcher Stelle du eine Speicherüberschreitung hast, sollte dir aber der Compiler anzeigen wo das Problem auftritt.



  • Sooo, habe die GoTos über den Haufen geschmissen.
    Leider immernoch den Fehler.

    Konnte den Fehler jetzt auf dieses Programmstück zurückverfolgen:
    Wobei Yreal=Xreal=400 (zwar etwas anders als davor ist, aber gleicher Fehler/Absturz)
    Und die Arrays jeweeils [401][401] groß sind, also 400 Speicherplätze ab 1 haben.

    Selbst wenn ich die Forschleifen nur bis 200 laufen lassen stürzt es ab 😞
    Läuft beim addieren der Felder was falsch? oO

    int f=1; int g=1; //f entspricht x und g entspricht y
    
    	for (int i=1; i<Yreal[0]; i=i+2)
    		 {for (int j=1; j<Xreal[0]; j=j+2)
    			  {	        
    			  Hs[f][g]=(H[j][i]+H[j+1][i]+H[j][i+1]+H[j+1][i+1])/4;
    			  Ss[f][g]=(S[j][i]+S[j+1][i]+S[j][i+1]+S[j+1][i+1])/4;          
    			  Vs[f][g]=(V[j][i]+V[j+1][i]+V[j][i+1]+V[j+1][i+1])/4;
    
    			  f=f+1;
    			  }
    		 g=g+1;
    		 }
    


  • Du hast vergessen, f wieder zurückzusetzen, da stehen die Chancen gut, daß es im Laufe der Berechnungen über die Array-Größe hinausläuft (dürfte am Ende bei ca. 160000 ankommen).

    PS: Sind Xreal und Yreal jetzt die Größenwerte oder sind das Arrays?



  • CStoll schrieb:

    Du hast vergessen, f wieder zurückzusetzen, da stehen die Chancen gut, daß es im Laufe der Berechnungen über die Array-Größe hinausläuft (dürfte am Ende bei ca. 160000 ankommen).

    PS: Sind Xreal und Yreal jetzt die Größenwerte oder sind das Arrays?

    Ohje 😉

    DANKE!
    Sind Arrays 😃


Anmelden zum Antworten