Страница 1 из 2
Добавлено: 11 май 2004, 07:51
Hup
Такая ошибка возникает, когда...
1. Выходишь за пределы массива
2. Не удаляешь дин. массив в нужный момент
Здесь могут помочь, Exceptions... При условии, что дело совсем туго!!!
Добавлено: 11 май 2004, 12:29
Absurd
Первые элементы массивов у тебя - px1[0],px2[0],py1[0],py2[0]
Последние - px1[n-1],px2[n-1],py1[n-1],py2[n-1]
Проверь в дебаггере, чтобы всегда выполнялось 0<=j<=(n-1) .
Добавлено: 11 май 2004, 12:42
AiK
Господа, а переведите-ка с Ц на русский вот это вот условие:
j<=*n+1
Добавлено: 11 май 2004, 13:10
Absurd
j меньше или равно чем (значение, расположеное по адресу, на который указывает n, увеличенное на единицу).
Криминал какой-то...
Добавлено: 11 май 2004, 13:44
Hup
Замени
for (int j=1;j<=*n+1;j++)
на
for (int j=1;j<*n+1;j++)
, т.к. в массиве нет элемента с индексом j

Добавлено: 11 май 2004, 13:49
Andy
Исходный кусок кода НЕ будет работать.
Если n - целое, то непонятно условие j <=*n+1 - тут должно быть исключение
Если n - указатель на целое, то непонятно new int[n]
И вообще...
Добавлено: 11 май 2004, 14:56
Romeo
И вообще это была опечатка автора, наверное, господа. По той причине, что исходный код у него компилился. Единственная логическая ошибка - это манипулирование "паскалевскими" пределами массива (1..n) вместо "сишных" (0..n-1).
Parasite, попробуй организовать цикл следующим образом:
Re: Ошибка при выполнении с указателями
Добавлено: 11 май 2004, 15:21
DeeJayC
Пиши:
Код: Выделить всё
int *px1 = new int[n+2], *px2= new int[n+2],
*py1 = new int[n+2], *py2 = new int[n+2];
Если цикл от 0 до n+1
Какого размера остальные массивы?
Добавлено: 11 май 2004, 15:30
Romeo
Верно, ошибка или при задании размеров массива или при задании границ массива при его прецеесинге, третьего не дано
