在这种情况下我应该使用 delete 还是 delete[] ? [复制]

Posted

技术标签:

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

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

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

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

struct node 
    int data;
    node *next;
;  

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

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

【问题讨论】:

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

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

【讨论】:

其实我是用for循环和delete来破坏列表的内存,但是不起作用。 我调用了 node *p 并试图删除,但它不起作用。 void destroy(node *p) for( ; p != NULL ; p = p->next) delete // 在这里,我该怎么办? 删除 p->数据不能在这里工作? @HaileyK 使用delete p;

以上是关于在这种情况下我应该使用 delete 还是 delete[] ? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在这种情况下我应该使用导航控制器吗?

在这种情况下我应该使用啥正确的数据类型?

在这种情况下我应该使用左连接吗?

在这种情况下我应该使用 Drools 吗?

在这种情况下我应该使用顶点着色器吗?

函数返回一个指向对象的指针,在这种情况下我应该返回啥?