我不明白这是怎么回事。这是我代码的一部分。
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节点->path->next已在此函数之外定义。但是正如你所看到的,当i计数器改变时,它们共享相同的地址,这使得指针指向另一个位置。
我是用gcc在solaris平台上编译的,任何帮助都是非常感谢的。
发布于 2010-04-12 19:21:13
有两种可能性:
您已经使用优化编译了address)
node->path
i进行优化,因此实际上没有任何i指向正确分配的内存。例如,可以将指针设置为指向堆栈上随后超出范围的对象。https://stackoverflow.com/questions/2624695
复制相似问题