指针即使在设置后也会给出垃圾值

时间:2010-10-10 06:17:17

标签: c++ raytracing

我有一个奇怪的指针问题。我正在构建一个用于光线跟踪的kd树,在BuildKDtree函数中我打印root-> left和root->右边我得到了存储在节点的各种属性的正确值。 当我完成该代码然后尝试使用原始根指针遍历树时,root-> left和root->右边的值包含垃圾和代码崩溃! 关于可能导致这种情况的任何建议? 我可以在必要时粘贴代码,但它非常笨拙。

4 个答案:

答案 0 :(得分:0)

可能是:

  • 为root分配数据结构时,实际上并没有获得有效的地址。
  • 你的其他一些代码(或你正在使用的框架)正在写出结构的界限。

一般来说,由于SEGFAULTs,第二种情况不太可能发生,但除非您实际写入过去的页面边界,否则不能保证这些情况发生。听起来像是一个讨厌的调试问题,试试valgrind:)

答案 1 :(得分:0)

你能检查一下这个指针是否有效吗?

也许你这样做:

  Node n = 0;
  n->doThat();

在这种情况下,这将没有任何有效的左右指针。

答案 2 :(得分:0)

BuildKDtree功能的签名是什么?有可能某个地方有一个指针,但实际需要的是一个指向指针的指针?只是想猜测:))

答案 3 :(得分:0)

谢谢你们指出一些可能的条件。我发现了这个错误。我实际上并没有在BuildKDtree函数中分配动态内存。所以在它内部工作正常。但是当我返回时,变量被破坏,因而错误。