C++的垃圾回收

这个问题实在去哪儿网的面试的时候一个面试官问到的一个问题,当时真的是一脸懵逼,只听说过JAVA的垃圾回收机制,没听过关于C++的垃圾回收啊,所以下来之后自己又了解了一下。

首先,C++一定是可以进行垃圾回收的。我们可以通过扫描并且标记内存中所有可能被使用的内存块,然后将已经分配出去的内存块中的没有被标记的内存块回收回来。但是要怎样才能扫描出所有可能被使用的内存块?

首先,通过扫描内存的数据,能够识别出指向堆上动态分配出来内存的指针,如果有识别错误,也只能是把不是指针的数据当成指针,不会把指针当成非指针数据,也就是说只可能漏回收内存块,而不会把正在使用的内存块回收。其次,所有内存块被引用的根,只可能存在与全局变量和当前的栈内,而全局变量都是集中于bss段和data段中,所以只要扫描bss段,data段以及当前使用的栈空间就可以得到当前正在使用的所有动态内存。

关于C++需要学习的东西很多,所以加油吧骚年!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值