Обновление : вы обновили определение ЖЖ, так что это больше не проблема.Так как это C ++, почему вы используете цикл и индексацию?Лучшее (как в: более безопасном) решении было бы использовать стандартные библиотечные алгоритмы и, в частности, накапливать .Делая это, вы получите ясность и возможно удалите источник сегфоута.
Если другие требования не ограничивают вас, вы должны следовать Скотту Майеру совет о предпочтении алгоритмов над циклами.
Второе обновление с полным кодом : Вы должны убедиться, что вы обращаетесь только к тем ячейкам памяти, которые вы правильно распределили.Итак:
- убедитесь, что h инициализируется с нуля, а
- , что вы никогда не пишете в r [210] и выше.
Еще лучше, уберите все эти магические числа, вместо 210 используйте k_max * (j_max - 1) и определите
const unsigned int k_max = 15;
const unsigned int j_max = 15;
Используйте std :: vector вместо массива, это позаботится о выделении памяти для вас.
Печать значений h и itr (или с помощью отладчика, который является очень полезным инструментом) покажет вам, куда вы обращаетесь к памяти, которую вы не делалирезерв.