指针的特质(简单问题)

时间:2011-02-14 23:24:58

标签: pointers

所以我对C ++比较陌生,所以指针是我仍然习惯的概念。我有一个名为Node的类,有两个名为leftright的Node *。在递归方法中,我将引用传递给Node的left字段: Node left (num); node->left = &left; 但是,当我返回遍历此节点时,num中有一个巨大的数字,我的程序崩溃了。我也尝试了这种方法node->left = new Node(num);,它完全没问题。每种方法之间有什么区别,为什么一种方法有效,而另一种方法无效?

1 个答案:

答案 0 :(得分:1)

当您声明Node left (num)时,left的空间将在本地堆栈上分配。从方法返回时,内存被删除(left超出范围)。第二种方法为堆中的(匿名)节点分配空间。这不受方法调用和返回的影响。您还可以将第一个版本修改为:Node *left = new Node(num);