我试图将节点值分配给指针,但是gdb在运行代码时给我分段错误。我该怎么办?
void biggerPotion(No* node, int bottleSize, int *aux){
if(node == NULL)
return;
maiorPocao(node>left, bottleSize, aux);
maiorPocao(node->right, bottleSize, aux);
if((node->value >= garra) && (node-> value < *aux))
*aux = node->value; //here is the issue
}
代码的其他相关部分是:
for(i=0; i< nBottles;i++){
a = 1000; //i declared that
biggerPotion(potions,bottleSize[i],&a);
}
答案 0 :(得分:0)
好的,因为错误行是:
*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);