Ich muss ein Array mit einem malloc zuweisen und ich muss einige Zahlen aus der Eingabe lesen. Dies ist mein Code:Pointer to Pointer Array & Stack Smashing Fehler
#include <stdio.h>
#include <stdlib.h>
void read(int **array, int *array_size)
{
int *tmp;
int i;
scanf("%d", array_size);
*array=malloc(*array_size*sizeof(int));
tmp=malloc(*array_size*sizeof(int));
for(i=0;i<*array_size;i++)
{
scanf("%d", &tmp[i]);
array[i]=&tmp[i];
}
}
//DO NOT EDIT main()
int main()
{
int *array;
int array_size,i;
read(&array,&array_size);
printf("Print array:\n");
for(i=0;i<array_size;i++)
printf("%d\n", array[i]);
return 0;
}
Es funktioniert irgendwie, aber nach Anzeige von Werten zeigt es ein Stapel (ich es mit GCC kompiliert) erkannt Zerschlagung.
Ich dachte, das Problem ist, dass *array=malloc(*array_size*sizeof(int))
, aber ich kann nicht herausfinden, wie es zu beheben ist. Gibt es eine andere Möglichkeit, dieses Array zuzuordnen, ohne main() zu bearbeiten? Vielen Dank.
Array_size ist nicht einmal initialisiert ... –
BTW die '# include's sind absolut notwendig für MCVE. In Abwesenheit von '' 'malloc' wird sich schlecht auf 64-Bit-Plattformen schlecht benehmen. –
@TonyTannous unter Berücksichtigung scanf Erfolg ..... es ist OK. –