【问题标题】:Should I use delete or delete[] in this kind of situation? [duplicate]在这种情况下我应该使用 delete 还是 delete[] ? [复制]
【发布时间】:2017-03-05 04:32:45
【问题描述】:

我正在使用 c++ 创建链表,并且每次都使用“new”来分配列表的内存。

所以我必须在这里使用delete来防止内存泄漏,但是我对此感到困惑,因为我不知道我是否必须使用delete或delete[]。

我应该把链表看作一个数组吗?

struct node {
    int data;
    node *next;
};  

我使用上面的代码来制作链表,就像你看到的代码一样,我使用指针连接节点。

所以.. 我必须使用 delete 还是 delete[] 来防止内存泄漏?

【问题讨论】:

  • 提示:如果你想知道你是否可以做一些微不足道的事情,你可以先尝试一下,编译器会告诉你这是不是一个好主意。发布一个stackoverflow问题,编译器可以告诉你,如果你只是点击“编译”键有点矫枉过正。
  • 对不起。我只是想确定..不是我只是想完成我的编码,而是想知道这个的详细原理..
  • 感谢您的帮助:)
  • 有一个简单的方法可以记住:如果你打电话给new,那么打电话给delete;如果你打电话给new[],那么打电话给delete[]

标签: c++


【解决方案1】:

要删除整个列表,您必须逐个节点删除,因此使用删除

【讨论】:

  • 其实我是用for循环和delete来破坏列表的内存,但是不起作用。
  • 我调用了 node *p 并试图删除,但它不起作用。 void destroy(node *p) { for( ; p != NULL ; p = p->next) { delete // 在这里,我该怎么办? } } 删除 p->数据不能在这里工作?
  • @HaileyK 使用delete p;
猜你喜欢
  • 2011-01-12
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多