C++清空链表时的问题

palhotel 2011-12-07 07:49:50
如果我链表节点中的有些数据域是动态分配的。比如节点内是char *name;然后生成节点时分配空间name=new char[10];
在删除时,是否需要先释放name,再释放节点呢?
...全文
200 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hackhat 2011-12-08
  • 打赏
  • 举报
回复
struct node
{
.......
~node()
{
delete[] name;
name=NULL;
}
};

标准的做法
riyueming184 2011-12-08
  • 打赏
  • 举报
回复
直接把节点弄成一个类,有构造函数,有析构函数不就成吗?
这是C++,不是C语言……,何必那么麻烦!
yaotang 2011-12-07
  • 打赏
  • 举报
回复
存放name指针 的是 一段指针类型大小的内存空间(后称内存段1),
name指针 指向的是 一段10个char类型大小的内存空间(侯成内存段2)

释放节点的时候,是释放了name,就是释放了内存段1,并没有释放内存段2,所以为了不会发生内存泄漏,说以在释放节点前要先释放name指针指向的内存段2。
modicum_ck 2011-12-07
  • 打赏
  • 举报
回复
2楼的方法不错。

释放的话应该先释放name,然后再释放结点。delete后最好是把结点指向NULL,防止野指针。
wsd8024 2011-12-07
  • 打赏
  • 举报
回复
再节点 这个 结构体中 写一个 析构函数

例如 :
struct node
{
.......
~node()
{
delete[] name;
}
};

释放节点后 自动删除name所指向数据.
Usopp_Dream 2011-12-07
  • 打赏
  • 举报
回复
先释放节点 释放name
话说 结贴率是0 怎么回事?好奇

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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