【发布时间】:2012-06-15 15:33:44
【问题描述】:
我在这里遇到了一个非常奇怪的问题,希望有人可以帮助我。这就是代码。
Node *fct(Node *list)
{
Node *node;
node = list;
...
}
通常一切都运行顺利,但在某些随机情况下,我会遇到分段错误。我用 GDB 调试。通常列表和节点的地址都是 0x80d4000,但是当 Segfault 发生时,节点的地址 = 0x400。 (列表仍然是 0x80d4000)。
我真的不知道这可能会出错,有什么想法吗?
【问题讨论】:
-
也许您在其他地方损坏了内存。我们需要更多代码,给定的片段没有任何问题。
-
很多想法,但没有更多代码,无法知道哪个想法对您的情况真正有用。
-
不是这里的代码有问题,而是调用 fct() 函数的人传递了无效数据。 (很可能它试图传递一个 NULL 指针的成员的地址)
-
检查 valgrind (valgrind.org) memchecker 工具是否可以帮助您更多
-
因为我必须实现自己的 malloc,可能有 1000 种可能性我可以破坏内存和许多代码行在这里发布:( 我想我只需要继续调试。谢谢反正
标签: c pointers segmentation-fault fault memory-address