Speicherzugriffsfehler



  • Hallo,

    sitze zurzeit an einem Programm bei dem mir leider jetzt erst eine grundsätzliche Frage beschäftigt.

    Ich habe eine main-Funktion

    int main(int argc, char *argv[])
    {
    
      alloc_matrix(&mat,dim);
    
      return 0;
    }
    

    In dieser rufe ich die externe Funktion alloc_matrix (Speicherreservierung), auf.

    void alloc_matrix(long ***mat, int dim)
    {
      int i;
    
      if ((*mat = (long **)malloc(dim*sizeof(long *))) == 0)
        {
          fprintf(stderr, "alloc_matrix:not enough space");
          exit(1);
        }
      for (i = 0; i < dim; i++)
        alloc_vector(&((*mat)[i]), cols);
    }
    
    void alloc_vector(long **vec, int dim)
    {
      if ((*vec = (long *)malloc(dim*sizeof(long))) == 0)
        {
          fprintf(stderr, "alloc_vector:not enough space");
          exit(1);
        }
    }
    

    Mein Problem ist nun, dass sobald ich dass Programm aufrufe einen Speicherzugriffsfehler erhalte. Mit valgrind habe ich herausgefunden, dass dieser an der Stelle

    printf("%ld\t", mat[j][i]);
    

    der print-Funktion entsteht. Ich habe aber dummerweise keine Ahnung, warum? 😕 Die Speicherreservierung müsste so in Ordnung sein, oder?
    Ich möchte die Größe (dim) einer symmetrische Matrix und die Matrix (mat) als untere Dreiecksmatrix eingeben können.

    Wahrscheinlich ist dies ein ziemlich simpler Denkfehler von mir, aber trotzdem wäre ich dankbar, wenn mir jemand kurz helfen könnte 🙂 .

    Vielen Dank schonmal im voraus.



  • In alloc_vector benutzt du dim nicht, sondern reservierst nur Speicher für 1 long. Ist vermutlich nicht beabsichtigt.



  • 👍 DANKE MFK. So blind kann man sein, wenn man einige Zeit vorm Rechner sitzt.

    😃


Anmelden zum Antworten