删除链表一个节点。需要free该节点吗?

「已注销」 2005-03-23 10:35:27
如:
typedef struct lb{
int data;
struct lb * next;
} NODE,* pNode;

main(void)
{ pNode lb,p;
1:创建一个三个节点的链表lb 略
2:删除链表的第2个节点
p = lb;
p = p->next;
lb.next = p.next;
free(p);//如果删除了这个节点,且以后都不需要用了,这一行是否应该加上呢?
}

第二个问题。free(p)释放的空存大小等于 sizeof(sizeof(NODE))吗?
...全文
1242 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ypengfei 2005-03-23
  • 打赏
  • 举报
回复
1.要free,不然造成内存泄露。尤其是服务器上,危害致命的,虽然现在有虚拟内存。
2.sizeof(NODE),同意楼上的楼上。

PS:楼上的楼上,您可真猛,我看到您已经不止几个回帖的人了,厉害,佩服!(发自内心的,没有贬义哦^_^)
zhousqy 2005-03-23
  • 打赏
  • 举报
回复
樓上正解
pcboyxhy 2005-03-23
  • 打赏
  • 举报
回复
sizeof(sizeof(NODE)) // sizeof(NODE)?

1. 必须free
2.你malloc的时候是多少,free的时候就是多少
EllieZhu__2005 2005-03-23
  • 打赏
  • 举报
回复
p1=(NODE *)malloc(sizeof(NODE));
p2=(NODE *)malloc(sizeof(NODE)*2);返回的p1,p2是指向不同的地址,当然是free(p1),free(p2)了,一般使用链表时才需要不断的申请,这时候free时只需要知道指向该链表的头指针就可以了,就不需要用很多指针来指向不断申请的空间了
inlin 2005-03-23
  • 打赏
  • 举报
回复
要free
zixiu2008 2005-03-23
  • 打赏
  • 举报
回复
如:
节点1 p=(NODE *)malloc(sizeof(NODE));
节点2 p=(NODE *)malloc(sizeof(NODE)*2);
...
如果这时p指向一个节点,我这时free(p),释放的空间是多大呢?
可不可以这样认为:free(p)所释放的内存地址是从 p开始+sizeof(NODE)这一段。
=============================================================================
你这样子分配的话,内存直接就泄露了

不同的节点要用不同的指针
0011411 2005-03-23
  • 打赏
  • 举报
回复
Free好啊,可以免费喽!哈哈!
sharkhuang 2005-03-23
  • 打赏
  • 举报
回复
of course!否这就会有memory leak
sharkhuang 2005-03-23
  • 打赏
  • 举报
回复
of course!不然就有memory leak
你我他111 2005-03-23
  • 打赏
  • 举报
回复
当malloc了一块内存,系统会在这块内存附近记录这块内存的大小;当free一块内存的时候,系统会
查找这块内存附近当初记录的大小,然后释放这么大的一块内存。
所以你
节点1 p1=(NODE *)malloc(sizeof(NODE));
节点2 p2=(NODE *)malloc(sizeof(NODE)*2);
当free的时后,系统会知道给p1,p2分配的内存大小,它就可以正确的释放了
「已注销」 2005-03-23
  • 打赏
  • 举报
回复
对于“你malloc的时候是多少,free的时候就是多少”这问话,我有一点不明白:
假设可能每个结点malloc的大小都不一样,
如:
节点1 p=(NODE *)malloc(sizeof(NODE));
节点2 p=(NODE *)malloc(sizeof(NODE)*2);
...
如果这时p指向一个节点,我这时free(p),释放的空间是多大呢?
可不可以这样认为:free(p)所释放的内存地址是从 p开始+sizeof(NODE)这一段。

说白了,我对malloc和free的实质不太明白,请指教, 谢谢

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧