我正在实现一个类Set,并且有一个成员函数,讽刺地称为member,如果要传递的值在set中,则返回true,否则返回false。我的问题是,如果我要创建一个临时节点进行迭代以搜索该值,那么在完成此临时节点后,是否需要删除该临时节点以将内存返回到堆,因为它不是从中返回的功能?

在此类中,将节点作为私有结构嵌入到Set类中,如下所示:

private:
  //Precondition: linked list is sorted in ascending order
  struct Node {
     int value;
     Node* link;
  };
  Node* list;
  static Node* cons(int x, Node *p);


我指的功能是:

bool Set::member(int x) const {
   if(list == nullptr)
      return false;

   Node* tempNode = list;

   while(tempNode != nullptr) {
      if(tempNode->value > x)
         return false;
      if(tempNode->value == x)
         return true;
      tempNode = tempNode->link;
   }
   return false;
}

最佳答案

没有。

tempNode只是带有automatic storage duration的非静态局部变量;它的范围仅限于函数的开始和结束。函数返回时,它将自动释放。

10-06 05:50