Страница 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, попробуй организовать цикл следующим образом:

Код: Выделить всё

for (i = 0; i < n; i++)
{
   ...
}

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
Верно, ошибка или при задании размеров массива или при задании границ массива при его прецеесинге, третьего не дано :)