有关树型节点释放内存的疑问。

gimmytang2003 2003-11-12 07:39:39
程序中有一个node型指针:
struct node *tree;
tree = (struct node *)malloc( 2*sampleSize*sizeof(struct node) );
用完这个tree后,可否用free(tree)将整个树全部释放掉?
注意tree指针并没变化,始终指向第一个元素。
...全文
45 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gimmytang2003 2003-11-13
  • 打赏
  • 举报
回复
我做了如下实验
1。不使用free命令,程序运行时占用内存30M.
2。仅使用一次free(tree),程序运行时占用内存14M.
3。使用遍历所有节点清空,占用内存不变,仍为14M.
gimmytang2003 2003-11-13
  • 打赏
  • 举报
回复
有没有人看看啊。。~~~
我按 ZhangYv(网络故障中) 的方法逐个清空节点,可是用任务管理器观察到的内存占用并没有减少啊。你的这个方法似乎没有什么效果。
Wolf0403 2003-11-12
  • 打赏
  • 举报
回复
树。。。我在翻译 Plainsong 贴的那个 Object Pascal 的 RB-Tree 代码。。。头硕大ing
楼上老大应该知道是哪篇,呵呵
ZhangYv 2003-11-12
  • 打赏
  • 举报
回复
不行啊,需要遍历树把一个个节点都释放掉.
void Postorder(node *p)
{
if (p){
Postorder(p->leftChild);
Postorder(p->rightChild);
free(p);
}
}
gimmytang2003 2003-11-12
  • 打赏
  • 举报
回复
可是我用watch观察tree的元素时,发现已经全部清空了啊。
tree, tree+1, ... tree+size所指向的元素都是NULL。这是不是说只要tree指针位于内存首,用free(tree)就可以把这个内存区全部清空??

24,853

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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