Вопрос: что вызывает случайное изменение этих значений?
Информация:
Мой код:
int q = nonZero;
for(j = nonZero;j>1;j--)
{
printf("Top: %i %i\n",j,q);
qsort(tree,j,sizeof(Node),cmp);
printf("Bottom: %i %i\n",j,q);
Node t = {tree[0],tree[1],-1};
tree[0] = &t;
tree[1] = tree[j];
tree[j] = NULL;
}
Не сложная маленькая программа. сделать узел из двух верхних узлов дерева, сделать так, чтобы новый верхний узел, прибегнуть к массиву, повторить. Я добавил 'q' в качестве значения отладки, я совершенно не понимаю, что именно происходит. Если я попытаюсь запустить его, j обычно начинается с 73, что и должно быть, ожидается, что тогда оно будет равно 72,71,70,69,68 ... 3,2 и что q останется 73 на неопределенный срок. вот мой вывод, хотя:
Top: 73 73
Bottom: -796584576 32767
Segmentation fault
но это еще не все, без перекомпиляции, я получил:
Top: 73 73
Bottom: 0 0
Segmentation fault
это последовательно дало бы мне один из этих двух выходов. после нескольких прогонов я увидел, что 32767 никогда не менялось, значение q, но значение j, здесь -796584576, всегда было каким-то другим абсурдно большим отрицательным числом. у кого-нибудь есть идеи, почему на земле может показаться, что qsort изменяет мое значение j, а также то, что кажется совершенно не связанным значением q?