Какие инструменты вы используете для компиляции программы?Есть некоторые флаги, которые включают проверки для такого рода вещей в e, .g.gcc (например, -fmudflap, я не использовал его, но это выглядит весьма полезным).
Если вы можете использовать отладчик (например, gdb), вы сможете добавить «просмотр данных» для переменной n2, и отладчик остановит программу всякий раз, когда он обнаруживает что-либо, записывающее в n2.Это должно помочь вам отследить ошибку.Или попробуйте valgrind .
Простой способ временно остановить этот тип ошибки - поместить фиктивные переменные вокруг одной получаемой, поэтому:
int dummy1[100];
int n2 = r - q;
int dummy2[100];
int L[5], R[5];
Переменныеперебор обычно вызывается написанием кода за пределами массивов.Виновник, вероятно, R[5]
, потому что это, вероятно, самый близкий.Вы можете заглянуть в макеты, чтобы увидеть, что пишется, и, возможно, сможете сделать вывод из того, что происходит.
Еще один вариант - сделать все массивы огромными, пока вы отслеживаете проблему.Снова установите значения за правильными границами на известное значение и проверьте те значения, которые должны быть неизменными.
Вы можете сделать небольшой макрос для этих проверок и поместить его в любое удобное место.