假设我们有一个List类,其中的数据成员名为front,这是一个Node指针。下面是一个成员函数,用于显示列表的成员(调用对象)。
有错误。识别并描述一些错误 话。然后更正错误。
void display ()
{
Node *temp= new Node;
temp=front;
while (temp!=NULL)
{
cout<<temp->data<<"\t";
temp=temp->next;
}
}
这是我测试中的问题之一,在上面给定的代码中我找不到任何错误。我什至在编译器中运行了这段代码,效果很好。
谁能告诉错误在哪里?
答案 0 :(得分:2)
df.repartition('date').write.partitionBy('date').mode(overwrite').orc('path')
首先,您不需要在这里致电new。只需声明指针并同时分配它即可。
第二,因为您确实调用过new,所以您刚刚创建了一个内存泄漏,也就是说,您分配的内存现在无法被释放(直到程序关闭)。
第三,您应该使用访问器方法访问front。
Node *temp = new Node; // a pointer, called temp, allocated to a new block
//of memory of size Node
temp = front // the pointer to the block of memory was just overwritten, and now you
//don't have a pointer to the block of memory you just allocated
为什么?好吧,如果您不小心执行以下操作会发生什么:
myList.GetFront() //this should return a pointer to the front of the list
您刚刚失去了指向列表开头的指针,其他所有使用front的方法也是如此。