当前位置:首页 > 内存 > 正文

删除链表节点释放内存

  • 内存
  • 2024-06-09 10:15:35
  • 5239

一、求问链表的内存释放问题这个小程序是正确的:
让temp指向第一个节点,
让node指向下一个节点,
释放temp指向的第一个节点,
重复。
问题在于你对指针的理解。
free(temp);即使临时值没有用,*temp指向的节点空间对以下内容也没有影响:temp=node;temp和node都指向下一个要释放的节点。这是完全正确的。
这就是理解的问题!!!
注释2:发布后不需要temp=NULL。temp是一个野指针,但只要你不访问*temp单位,就可以了。
---------------------------------------------
指针概念很混乱!
原引1:刚刚释放的节点指向下一个节点。这个节点和未发布的节点有什么区别?链表之间的连接根本没有改变或者消失!-->这是我的第一个问题。希望专家能给我一些建议。
temp指向的单元*temp已被释放,但temp本身仍然存在。这只是一个野指针。别混淆了。*这是temp和temp之间的概念差异。


二、求问个c语言问题,删除链表节点的时候为什么要释放被删节点,不释放也不影响呀如果不释放的话,就会造成内存泄漏。
比如业务逻辑需要不断添加节点、不断删除节点。如果节点的内存空间没有释放,假设每个节点占用8字节内存,就会执行这个块逻辑。够了这么多次,内存已经不够用了。这是一个隐患。
(尤其当处理的数据量很大时,这个问题会更加明显)


三、为什么动态链表需要释放呢??一般来说,不会有什么大的后果,因为你用的是小程序,开口也比较小。由于这里的存储空间是存储空间,如果继续申请的话,就会占用大部分存储空间。如果不释放,就会继续占用内存,减少内存大小。当然,重启电脑后就会释放。