Проблема в том, что вы только что создали 3 потока, но ваши индексы выходят за пределы. Обратите внимание, что если вы определите int random_number [10]; , то последний доступный элемент будет random_number [9]
То же самое относится к вашим функциям min_thread () max_thread () Avg_thread (). В каждой из этих функций ваш цикл for имеет значение от 1 до 10 (десятый элемент не существует), другими словами, вы хотите получить доступ к чему-то, чего нет в массиве.
Так что изменить
для (int i = 1; i <= MAXSize; i ++) </p>
до
для (int i = 0; i
и
pthread_create(&my_thread[1], NULL, min_thread, (void*)&random_number);
pthread_create(&my_thread[2], NULL, max_thread, (void*)&random_number);
pthread_create(&my_thread[3], NULL, Avg_thread, (void*)&random_number);
до
pthread_create(&my_thread[0], NULL, min_thread (void*)&random_number);
pthread_create(&my_thread[1], NULL, max_thread, (void*)&random_number);
pthread_create(&my_thread[2], NULL, Avg_thread, (void*)&random_number);
Как предложил Чираг Ачарья, вы также должны инициализировать локальные переменные min, max и avg внутри функций. Если вы этого не сделаете, вы можете получить неопределенное поведение.
Вам следует взглянуть на следующую ссылку Доступ к массиву вне границ не дает ошибок, почему? для получения более подробной информации.