@Jasge

Как исправить и с чем связано stack smashing detected?

#include <stdio.h>

int get_max(int [], int );


int main(){
const int N = 14;
int  arr[] = {};
int  l;
l = get_max(arr, N);
return 0;
}




int get_max(int arr[], int size)
{
for (int i = 0; i < size; i++){
	scanf("%d", &arr[i]);
	}
int max = 0;
for (int i = 0; i < size; i++){
        if(arr[i] > max){
                max = arr[i];
        }

}
printf("%d\n", max);
}


После выполнения программы, написанной на Си, выдаёт ошибку:
*** stack smashing detected ***: terminated
Аварийный останов (стек памяти сброшен на диск)
  • Вопрос задан
  • 6662 просмотра
Решения вопроса 1
includedlibrary
@includedlibrary
Офрмляйте код нормально, пожалуйста, с отступами. Массиву нужен размер, у вас же он равен нулю. Функция get_max ничего не возвращает, хотя заявлен тип int.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@makaki4
Вышел за границу локального массива (описанного в теле функции без ключевого слова static) и затер адрес возврата мусорным значением, результат - передача управления по завершении функции get_max неизвестно куда, по итогу ось гасит процесс к чертовой матери, не давая ему даже шанса понять что произошло на данной нам господом богом планете земля, притом, что он всего лишь выполнялся и ничего плохо не сделал никому, это жестоко.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы