Guten Morgen zusammen,
ich hoffe jemand kann mir helfen.
Die Programmiersprache ist C:
Binäre Daten sollen mittels fread eingelesen werden. Dabei handelt es sich hier speziell um Daten, die einen 2D-Array darstellen. Weil dies aber ein sonderfall ist, hat der empfangende Array nicht 2 sondern 3 Dimensionen vorgesehen. Meine Idee war es, die dritte DImension einfach auf 1 zu setzen.
Wichtig anzumerken ist auch, dass es sich um einen Pointer handelt, dem ich mittels malloc Speicher reserviert habe.
Als Info noch:
pnt_U_snapshot ist der Zeiger auf folgende structure
pnt_configuration->int_kMax hat also den Wert 1 in diesem speziellen Fall.
Das Problem entsteht jetzt beim Import:
Bis zu "TESTOUTPUT" komme ich noch, aber dann crashed das Programm "Speicherzugriffsfehler"
Wie man am fread Befehl erkennt, ist der 2D-Array 256*32 Elemente groß und daher sind: pnt_configuration->int_iMax=256
pnt_configuration->int_jMax=32
Alloziert wurde also genug Speicher.
ich hoffe jemand kann mir helfen.
Die Programmiersprache ist C:
Binäre Daten sollen mittels fread eingelesen werden. Dabei handelt es sich hier speziell um Daten, die einen 2D-Array darstellen. Weil dies aber ein sonderfall ist, hat der empfangende Array nicht 2 sondern 3 Dimensionen vorgesehen. Meine Idee war es, die dritte DImension einfach auf 1 zu setzen.
Wichtig anzumerken ist auch, dass es sich um einen Pointer handelt, dem ich mittels malloc Speicher reserviert habe.
C:
pnt_U_snapshot->rho = (float ***)malloc(pnt_configuration->int_iMax* sizeof(float **));
for(i = 0; i < pnt_configuration->int_iMax; i++)
{
pnt_U_snapshot->rho[i] = (float **)malloc(pnt_configuration->int_jMax* sizeof(float *));
}
for(i = 0; i < pnt_configuration->int_iMax; i++)
{
for(j = 0; j < pnt_configuration->int_jMax; j++)
{
pnt_U_snapshot->rho[i][j] = (float *)malloc(pnt_configuration->int_kMax* sizeof(float));
}
}
pnt_U_snapshot ist der Zeiger auf folgende structure
C:
struct strct_U_snapshot
{
float ***rho;
float ***u;
float ***v;
float ***w;
float ***p;
float ***e;
};
Das Problem entsteht jetzt beim Import:
C:
FILE *fd0;
fd0=fopen("result","rb");
fread(pnt_U_snapshot->rho, 256*32*sizeof(float), 1, fd0);
fclose(fd0);
printf("TESTOUTPUT\n");
printf("pnt_U_snapshot: %f\n",pnt_U_snapshot->rho[0][0][0]);
Wie man am fread Befehl erkennt, ist der 2D-Array 256*32 Elemente groß und daher sind: pnt_configuration->int_iMax=256
pnt_configuration->int_jMax=32
Alloziert wurde also genug Speicher.
Zuletzt bearbeitet: