9.10.3 C 程序的保守 Mark & Sweep

目录
P608

平衡二叉树是由所有已分配块组成的,键是块的起始地址,每个块的头部存储指向左右儿子的指针(指向另一个块的起始地址)
之所以要这么建立平衡二叉树,是因为我们想要判断一个给定的指针p是否指向某一个已分配块(我们之前说假设指针都指向块的开头,那是理想情况下,这里是实际情况,完全有可能程序员自己在使用了malloc之后,新定义一个指针指向这个已分配块的内部,然后删除malloc返回的指针,我们当然认为这个已分配块是可以访问的),这样才可以找出到底可以回收哪些块(如果一个块没有任何指针指向,那么这个块就是可回收的);而要达到上面的效果,我们肯定要遍历每一个块的,用平衡二叉树去遍历就会更高效

P609

这里举出的C语言的回收器是保守的例子就是说我们在标记阶段的时候,要找出每一个可能的指针(对应图9-49中的根节点),从其开始遍历然后标记所有的已分配块;已分配块里面的有效载荷可以存储局部变量,而局部变量可能是指针,所以需要遍历一个块的有效载荷内部,于是就给了其指向b的机会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值