美文网首页
Android中智能指针

Android中智能指针

作者: 杨殿生 | 来源:发表于2018-11-19 10:23 被阅读0次

首先智能指针是应用在C++层面的,java中是把指针这个东西隐藏了的,回收对象使用GC不需要程序员自己去处理

为什么要引入智能指针

C++中使用对象会存在几个问题

1,对象创建后的初始化问题

2,new和delete不成对出现问题

3,野指针问题

什么是野指针,比如ptr指向一个对象,这个对象使用完后也被delete了,但是ptr并没有被设置成null,这样如果有人去引用ptr这个指针就会出现野指针的问题

智能指针的出现就是为了解决上面的三个问题

首先在对象初始化的时候我们叫对象的指针设置成null
解决delete和野指针的问题就需要统计当前对象是否被引用,使用引用计数法,也就是使用count去计数当前对象引用的计数,如果有人引用他了那么+1,释放他那么-1

Android中如果使用智能指针

安卓智能指针分为强指针,和弱指针
强指针好理解,就是指针指向一个引用。那什么是弱指针呢
举例一种情况,假设A对象中有B对象的应用,B对象中有A对象的引用,这个时候A和B对象他们的引用计数都不是0,也就是说他们都不会被释放,这样就会造成类似死锁的情况,而弱指针就是为了处理这种情况
当两个对象互相引用的时候,那么一个引用为强指针,另一个为弱指针,引用计数规则为,如果强引用+1那么弱引用也需要+1,如果弱引用+1强引用可以不+1,当强引用计数为0的时候这个对象就可以被释放了。如果要使用弱引用使用对象,那么需要先把弱引用升级为强引用然后才可以去引用对象


智能指针Binder中使用.png

相关文章

  • Android中智能指针

    首先智能指针是应用在C++层面的,java中是把指针这个东西隐藏了的,回收对象使用GC不需要程序员自己去处理 为什...

  • Android智能指针分析

    Android智能指针分析总结 什么是智能指针 C++ 指针需要手动释放,否则会造成内存泄露,但是如果项目工程比较...

  • Android智能指针

    网上已经有很多分析智能指针的文章了,讲得不错的是:Android系统的智能指针(轻量级指针、强指针和弱指针)的实现...

  • Android之智能指针

    什么是智能指针 智能指针是C++中的一个概念,通过基于引用计数的方法,解决对象的自动释放的问题。 在Android...

  • Android中的智能指针

    指针 在传统的C++编程中,指针的使用一直是一把双刃剑。指针赋予了我们直接操作硬件地址的能力,但同时也带来了诸多问...

  • android智能指针介绍

    本篇介绍 android中有三种智能指针,分别是轻量级指针,强指针,弱指针。轻量级指针实现简洁,效果类似于强指针,...

  • chrome中智能指针使用

    chrom中智能指针的概述和作用 chrome中智能指针的用法和总结 包含如下四种智能指针:scoped_ptr ...

  • 9_智能指针示例

    智能指针在37_智能指针分析中详细学习过。此处实例中通过模板实现了可复用的智能指针模板类 需要一个特殊的指针——通...

  • Rust for cpp devs - 智能指针

    与 cpp 类似,Rust 也有智能指针。Rust 中的智能指针与引用最大的不同是,智能指针 own 内存,而引用...

  • Android智能指针

    前言 Java 和 C/C++ 的一个重大区别,就是它没有"指针"的概念,这并不代表 Java 不需要只用指针,而...

网友评论

      本文标题:Android中智能指针

      本文链接:https://www.haomeiwen.com/subject/hmrofqtx.html