Хорошо, поскольку ошибочная строка:
*aux = node->value;
, тогда либо aux
является проблемой, либо node
(потому что это только два указателя, на которые разыменовывается эта строка).
Я бы распечатал их оба перед выполнением этого блока if
, чтобы быть уверенным:
fprintf(stderr, "node is %p, aux is %p\n", node, aux);
Учитывая широкое использование node
и небольшое использование aux
, это вероятно последний, который вызывает проблему, и в этом случае вы должны проверить, что вы передаете вызову верхнего уровня biggerPortion
.Вы должны опубликовать этот вызов верхнего уровня, включая объявление любой переменной, которую вы передаете.
В любом случае вы можете проверить это, просто изменив:
*aux = node->value;
на:
{
int temp = node->value;
}
Если проблема исчезнет, то это определенно неверный указатель aux
.Убедитесь, что вы действительно передаете указатель, например:
int myVar;
biggerPotion(rootNodePtr, 42, &myVar);