删除链表的节点,关于delete和free

最近温习链表的知识,看到《C++入门经典》,第九版,P528。

这里面讲解了链表的删除节点。

 

delete nodeToDelete;

 

用这样一句话就删除节点了,十分方便。

不过,我还是有些疑问,这是不是太简单了。然后就查询了一下,果然有学习到了一个知识点,我已经会的,忘记了,这次又学一遍,应该不会忘记了。

 

关于delete和free的区别,

################################################################################

转自http://www.cnblogs.com/zhuyp1015/archive/2012/07/20/2601698.html

################################################################################

1. delete 用于释放 new 分配的空间,free 有用释放 malloc 分配的空间

2. delete [] 用于释放 new [] 分配的空间
3. delete 释放空间的时候会调用 相应对象的析构函数
     顺便说一下new在分配空间的时候同时会调用对象的构造函数,对对象进行初始化,使用malloc则只是分配内存
4. 调用free 之前需要检查 需要释放的指针是否为空,使用delete 释放内存则不需要检查指针是否为NULL
5. free 和 delete 不能混用,也就是说new 分配的内存空间最好不要使用使用free 来释放,malloc 分配的空间也不要使用 delete来释放

 

 

 

你可能感兴趣的:(学习算法)