我有一个奇怪的指针问题。我正在构建一个用于光线跟踪的kd树,在BuildKDtree函数中我打印root-> left和root->右边我得到了存储在节点的各种属性的正确值。 当我完成该代码然后尝试使用原始根指针遍历树时,root-> left和root->右边的值包含垃圾和代码崩溃! 关于可能导致这种情况的任何建议? 我可以在必要时粘贴代码,但它非常笨拙。
答案 0 :(得分:0)
可能是:
一般来说,由于SEGFAULTs,第二种情况不太可能发生,但除非您实际写入过去的页面边界,否则不能保证这些情况发生。听起来像是一个讨厌的调试问题,试试valgrind:)
答案 1 :(得分:0)
你能检查一下这个指针是否有效吗?
也许你这样做:
Node n = 0;
n->doThat();
在这种情况下,这将没有任何有效的左右指针。
答案 2 :(得分:0)
BuildKDtree
功能的签名是什么?有可能某个地方有一个指针,但实际需要的是一个指向指针的指针?只是想猜测:))
答案 3 :(得分:0)
谢谢你们指出一些可能的条件。我发现了这个错误。我实际上并没有在BuildKDtree函数中分配动态内存。所以在它内部工作正常。但是当我返回时,变量被破坏,因而错误。