Guten tag ich bekomme beim aufruf dieses Programms die Fehlermeldung
Beschreibung des Programms :
das Programm soll aus einem file matrizen lesen und die wollte ich in einem 3d Array verpacken
matrizen[nr/index][zeile][spalte];
aber nach dem 200 aufruf kann es nicht mehr allocated werden .
:*** glibc detected *** ./mat: realloc(): invalid next size: 0x09619170 ***
was mache ich hier falsch bitte um HILFE !!!!!
Beschreibung des Programms :
das Programm soll aus einem file matrizen lesen und die wollte ich in einem 3d Array verpacken
matrizen[nr/index][zeile][spalte];
aber nach dem 200 aufruf kann es nicht mehr allocated werden .
:*** glibc detected *** ./mat: realloc(): invalid next size: 0x09619170 ***
was mache ich hier falsch bitte um HILFE !!!!!
Code:
#include<stdio.h>
#include<stdlib.h>
#include "matrix.h"
int*** matrizen ;
FILE *fp;
int speicher;
int read(){
int zahl;
int zl=0;
int sp=0;
int i=0;
if ( ( fp = fopen("matrix.dat", "r") ) == NULL ) {
fprintf(stderr," *** Error: Can't open 'Dateiname' for read!\n");
return 1 ;
}
init();
while(fscanf(fp,"%d",&zahl) != EOF ){
matrizen[i][zl][sp]=zahl;
printf("\nmatrizen[%d][%d][%d]= %3d\n ",i,zl,sp,matrizen[i][zl][sp]);
if((zl==DIM-1) && (sp==DIM-1) ){ getmem();zl=0; sp=0; i++; }
else if(sp==DIM-1){ zl++;sp=0; }
else {sp++;}
}
free(matrizen);
fclose(fp);
return 0;
}
void init(){
int zl;
matrizen=(int***) malloc(100*sizeof(int));
matrizen[0]=(int**)malloc(DIM*sizeof(int));
for(zl=0;zl<DIM;zl++){
matrizen[0][zl]=(int*)malloc(DIM*sizeof(int));
}
}
void getmem(){
int zl;
speicher++;
static int zaehler;
if(zaehler>=100){
matrizen= (int***)realloc(matrizen,100*sizeof(int));
printf("\n\nspeicher reservierti\n\n");
zaehler=0;
}
printf("zaehler :%d",zaehler);
matrizen[speicher]=(int**)malloc(DIM*sizeof(int));
for(zl=0;zl<DIM;zl++){
matrizen[speicher][zl]=(int*)malloc(DIM*sizeof(int));
}
zaehler++;
}
int main(){
read();
return 0;
}