Re[2]: CXX0030: Error: expression cannot be evaluated
От: Кодт Россия  
Дата: 26.09.12 17:57
Оценка: 1 (1)
Здравствуйте, Кодт, Вы писали:

К>Твой пример на кодепаде: http://codepad.org/sz8xEBVV

К>выдаёт сегфолт (расстрел памяти) на 28 шаге.

Очевидный косяк: for(i=0; i<=n; ++i).
В С/С++ принято использовать полуинтервалы — т.е. a[n] содержит элементы a[0], a[1], ..., a[n-1].
При i=n происходит вылет за границу массива.

Я добавил отладочный вывод (значения индексов i и j) — http://codepad.org/ni6fysTP
И вот что получил
<.....>

START!!!
i=0, j=4
sdg=0.011244
i=1, j=4
sdg=0.0123149
i=2, j=4
sdg=0.0123691
i=3, j=-1483517220

Segmentation fault

То есть, на последнем этапе (j=4, i=2) мы умудрились выскочить за границу массива Ht и выстрелить в находящуюся по соседству переменную j.
После чего попытались обратиться к Ht[j] с этим бешеным отрицательным значением.

Разбираться в алгоритме не хочу, — так что более содержательную помощь пока оказать не готов.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.