在这种情况下我应该使用 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[] ? [复制]的主要内容,如果未能解决你的问题,请参考以下文章