Прежде всего, это приведет к переполнению буфера (на два):
Вы выделили место для 5 целых чисел (последний индекс 4).Затем:
array[arraySize + 1] = newElement;
выполняет запись в индекс 6, который находится на два после конца массива.Если вы хотите изменить размер массивов, вам нужно использовать realloc., А вашей функции нужна другая подпись, чтобы она могла изменять указатель.Что-то вроде (без проверки ошибок):
int insert(int **array, int arraySize, int newElement)
{
*array = realloc(*array, ++arraySize * sizeof(int));
(*array)[arraySize - 1] = newElement;
return arraySize; // Return new Array size......
}
int arraySize = 5;
int *array = malloc(arraySize * sizeof(int));
for(int i = 0; i < arraySize; i++)
{
array[i] = i + 1;
}
arraySize = insert(&array, arraySize, 6);
Во-вторых, неясно, как вы ожидаете, что печать будет работать вообще, не зная размера.Когда вы передаете массив функции, вы должны либо передать длину, либо завершить массив согласованным способом (например, с помощью NULL или 0).