void addEnd(T data) {
if (head == NULL) {
Node<T> *temp = new Node<T>(data);
head = temp;
tail = temp;
temp = NULL;
delete temp;
++size;
} else {
Node<T> *temp = new Node<T>(data);
tail->LinkToNext(temp);
temp->LinkToPrev(tail);
tail = temp;
temp = NULL;
delete temp;
++size;
}
}
在上面的addEnd函数中,在使用temp在堆上分配新Node之后,应该删除temp吗,因为这可能会导致内存泄漏或无关紧要。
您不得在addEnd
函数中删除新创建的节点,因为稍后将使用它。丢弃列表时,应删除节点。(也许在析构函数和/或类似clear()
函数中)。
还要注意,delete temp;
您的代码中的毫无意义(没有收获,没有伤害),因为在此之前temp
设置为NULL
,并且delete NULL;
定义为不执行任何操作。
变量temp
本身通常分配在堆栈上,并在从函数返回时自动删除,因此您无需显式删除它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句