number_nine
Grünschnabel
Hallo,
ich habe mit malloc eine Matrix dynamisch erzeugt und möchte sie dann mittels realloc vergrößern. Dazu habe ich mir aus dem Netz folgenden Code gesucht:
Wenn ich die Funktion realloc_2D aufrufe, kommt als Fehler 'Invalid Argument'. Kann mir jemand sagen woran das liegt?
Danke schonmal
Jeannine
ich habe mit malloc eine Matrix dynamisch erzeugt und möchte sie dann mittels realloc vergrößern. Dazu habe ich mir aus dem Netz folgenden Code gesucht:
Code:
int **realloc_2D(int **old_2d_array, size_t xalt, size_t yalt,
size_t xneu, size_t yneu)
{
int **neu_2d_array;
int *p;
size_t row;
/*Benötigen wir Speicherplatz?..........*/
if( xneu*yneu*sizeof(**neu_2d_array)>
xalt*yalt*sizeof(**old_2d_array))
/*Wir reservieren Speicher........*/
neu_2d_array=realloc(old_2d_array, xneu*yneu*sizeof(**neu_2d_array));
else
neu_2d_array=old_2d_array;
if(neu_2d_array == NULL)
return NULL;
else
{
for(row=xalt, p=(int *)neu_2d_array+xneu; row<xneu; row++, p+=yneu)
neu_2d_array[row]=p;
}
return neu_2d_array;
}
int **malloc_2D(size_t x, size_t y)
{
int **array_2d;
int *p;
size_t row;
array_2d=malloc(x*y*sizeof(**array_2d));
if(array_2d == NULL)
return NULL;
else
{
for(row=0, p=(int *)array_2d+x; row<x; row++, p+=y)
array_2d[row]=p;
}
return array_2d;
}
Wenn ich die Funktion realloc_2D aufrufe, kommt als Fehler 'Invalid Argument'. Kann mir jemand sagen woran das liegt?
Danke schonmal
Jeannine