これがどのように起こるかわかりません。これは私のコードの一部です..
int isGoal(Node *node, int startNode){
int i;
.
.
}
gdb を使用してこれをデバッグすると、以前に割り当てられたメモリ アドレスに「i」が割り当てられていることがわかりました。
(gdb)print &node->path->next
$26 = (struct intNode **) 0xffbff2f0
(gdb) print &i
$22 = (int *) 0xffbff2f0
node->path->next は、この関数の外で既に定義されています。しかし、ご覧のとおり、それらは同じアドレスを共有しているため、ある時点でiカウンターが変更されたときにポインターが別の場所を指すようになります。
solaris プラットフォームで gcc を使用してコンパイルしました。