Der Fehler liegt in dieser Zeile:
int intArray[size];
da die Variable size zur Kompilierzeit nicht bekannt ist.
Im Gegensatz zum statischen Speicher, der zur Kompilierzeit für Variablen verwendet wird, erlaubt es malloc, Speicher dynamisch zur Laufzeit zu allozieren, was besonders nützlich ist, wenn die Größe des benötigten Speichers erst während der Programmausführung bekannt wird. Die Funktion malloc gehört zur Standardbibliothek stdlib.h und hat folgende Signatur:
void *malloc(size_t size);
Hierbei steht size für die Anzahl der Bytes, die du für den dynamischen Speicher benötigst. Die Funktion gibt einen Zeiger vom Typ void * auf den Anfang des reservierten Speicherbereichs zurück. Da der Typ void * generisch ist, musst du diesen Zeiger in den gewünschten Datentyp umwandeln, bevor du darauf zugreifen kannst.
int *intArray = (int *)malloc(10 * sizeof(int));
In diesem Beispiel reserviert malloc Speicher für ein Array mit 10 int-Elementen und wandelt den zurückgegebenen Zeiger in einen Zeiger auf int um. Es ist wichtig zu beachten, dass nach der Verwendung des allokierten Speichers dieser mit der Funktion free freigegeben werden sollte, um Speicherlecks zu vermeiden.
free(intArray);