2010-10-10 62 views
0

我有一个奇怪的问题与指针。我正在建立一个光线跟踪KD树,并在BuildKDtree函数打印根 - >左和右 - >右,我得到正确的值用于存储在节点上的各种属性。 当我完成该代码,然后尝试使用原始根指针遍历树时,root-> left和root-> right值包含垃圾和代码崩溃! 任何有关可能导致此问题的建议? 如果需要,我可以粘贴代码,但它很笨拙。设置垃圾值后指针即使设置

+0

这可能只是一个缺失的原始根指针分配,或类似的东西。如果可以,请发布代码。好主意做一个副本,并尽量减少到绝对必需品。 – 2010-10-10 06:33:37

回答

0

BuildKDtree函数的签名是什么?有没有可能有一个指针,但实际需要的是指针指针?只是想猜测:)

+0

谢谢阿伦其实我也这么认为,但我想现在就解决了。 – Manish 2010-10-10 06:48:53

0

机会是:

  • 当您分配root的数据结构,你不是实际上得到一个有效的地址。
  • 您的其他代码(或您正在使用的框架)正在写出结构的界限。

一般来说,第二个因为SEGFAULT而不太可能,但是除非您真的写出过去的页面边界,否则这些不会保证发生。听起来像一个讨厌的问题进行调试,尝试valgrind :)

0

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

也许你做这样的事情:

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

在这种情况下,这不会有任何有效的左侧和右侧的指针。

0

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