zugriffsverletzung bei doppelzeiger



  • int **puffer_sortierabstand[28][3]; // [objektanzahl[schichtenanzahl]+1][die 2 biggest_values];
    int **puffer_tauschen;
    
    //sortierzeigerarray zu den biggest rates zeigen
    for(int bild=1;bild<=bildanzahl;++bild)
      {
      puffer_sortierabstand[bild][1]=&biggest_rates[bild+1][bild][1];
      puffer_sortierabstand[bild][2]=&biggest_rates[bild+1][bild][2];
      }
    
    // nach abstand sortieren (die kleinsten abstände zuerst)(bubblesort, die blasen blubbern nach oben)
    for(int bild=1;bild<=bildanzahl;++bild) // schleife über zu sortierenden bereich
      {
      for(int unsortiert=bildanzahl;unsortiert>=bild;--unsortiert) // schleife über noch unsortierten bereich (fängt bei jeder ausführung einen index später an, zählt aber immer bis zum letzten index, wird also 1 kleiner)
        {
        if(**puffer_sortierabstand[unsortiert][1]-**puffer_sortierabstand[unsortiert][2]<**puffer_sortierabstand[unsortiert-1][1]-**puffer_sortierabstand[unsortiert-1][2]) //tauschen wenn der abstand der größten feuerraten des vorherigen index größer als der des aktuellen
          {
          for(int bigness=1;bigness<=2;++bigness) // größten und zweitgrößten wert auf gleichen beispielbilderindex tauschen
            {
            puffer_tauschen=puffer_sortierabstand[unsortiert-1][bigness];  // hilfszeiger erhält die adresse des vorherigen index
            puffer_sortierabstand[unsortiert-1][bigness]=puffer_sortierabstand[unsortiert][bigness]; // vorheriger index = aktueller index (verschieben nach oben(funktionell hätte man es auch so schreiben können daß es an der stelle nach unten verschoben wird und die blasen trotzdem nach oben blubbern))
            puffer_sortierabstand[unsortiert][bigness]=puffer_tauschen; // aktueller index erhält die adresse des vorherigen index
            }
          }
        }
      }
    

    nanu bei dem if erhalte ich diese meldung:

    ---------------------------
    Benachrichtigung über Debugger-Exception
    ---------------------------
    Im Projekt Test.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0040292D in Modul 'Test.exe'. Lesen von Adresse 900020C2'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
    ---------------------------
    OK Hilfe
    ---------------------------

    der doppelzeiger zeigt auf einen zeiger der auf arraydaten zeigt.

    hmm wenn ich nen einfachen zeiger draus mache bekomme ich immernoch das:

    ---------------------------
    Benachrichtigung über Debugger-Exception
    ---------------------------
    Im Projekt Test.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00402914 in Modul 'Test.exe'. Lesen von Adresse 0000BC4E'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
    ---------------------------
    OK Hilfe
    ---------------------------



  • scheint so als kommt er gegen schleifenende bei unsortiert-1 gegen schleifenende auf -1.
    scheint weiter so als würde ich es ohne hilfe hinbekommen.


Anmelden zum Antworten