[cdev] задача 4, 135 гр.
jam
rg-400 на list.ru
Сб Дек 11 17:47:50 MSK 2010
В parray_delete_range все еще есть ошибка, возьмите нарисуйте на бумаге
массив какого-либо определенного размера и выполните с ним такие же
действия, что вы написали в программе.
Напоминаю, что размер массива у вас sizeof(void *) * pa->nelems(если не
учитывать, что мы выделяем места для nalloc элемнтов), а адрес начала
это pa->data, а запись pa->data + pa->nelems - 1 - это адрес последнего
элемента и все, что после него не является элементом этого массива. А вы
залезаете либо на память, которую вообще не выделяли, либо выделяли, но
отношение именно к массиву из pa->nelems элементов не имеет.
Это к записи :
memmove(pa->data+nth, pa->data+pa->nelems-1,
((pa->nelems -1- nth))*sizeof(void *));
Подробная информация о списке рассылки cdev