Realloc-Absturz

klo

Mitglied
Hallo


also ich habe ein Problem mein Programm stürzt bei jedem durchlauf beim realloc mit einem Heap error ab.


Code:
int main(void) {
  
          int anzSchueler=0;
          struct Schueler *liste=NULL;
          ......
          reserviereSpeicherSchueler(&anzSchueler, &liste);
   }

void reserviereSpeicherSchueler(int* anzSchueler,struct Schueler **liste)
{

       if((*liste) == NULL)
       {

               *liste=(struct Schueler*) malloc(sizeof(struct Schueler)*
((*anzSchueler)++));                    // sizeof größe vom struct schueler.
               printf("%p",*liste);
       }
       else
       {

               (*anzSchueler)++;
               *liste=(struct Schueler*) realloc(*liste, sizeof(struct Schueler) *
((*anzSchueler)));



       }

       return;
}


hoffe mir kann jemand helfen.


lg Mike
 
Hi.

Mach ein vollständiges Minimalprogramm wo der Fehler auftritt. In diesem Codeabschnitt kann ich keinen Fehler entdecken (der zu einem Absturz führen würde - aber evtl. solltest du die Inkrementierung der anzSchueler nochmal überdenken hinsichtlich Prä- / Postinkrement).

In C sollte man den Rückgabewert von malloc/realloc/calloc nicht casten.

Und evtl. solltest du wirklich eine Liste verwenden anstatt mit realloc zu arbeiten.

Gruß

PS: Übrigens brauchst du keine Unterscheidung zwischen malloc und realloc vornehmen, realloc funktioniert auch mit NULL als erstem Parameter.
 
Zuletzt bearbeitet:
Thx der Fehler war wirklich das post-inkrement, was ja auch logisch ist wenn da 0 steht....


lg mike
 
Zurück