Android的引用计数(强弱指针)技术及一些问题 分类: Android 2013-06-07 18:25 844人阅读 评论(4) 收藏 举报 目录(?)[+] Android C++框架层的引用计数技术 C++ 中对指针的使用时很头疼的事情,一个是经常会忘记free 指针,造成内存泄露,另外一个就是野指针问题:访问已经free掉的指针.程序debug工作的相当大部分,都是花费在这.Android中通过引用计数 来自动管理指针的生命周期,动态申请的内存将会在不再需要时被自动释放(有点类似Ja…
参考网站:https://www.cnblogs.com/fangyukuan/archive/2010/06/06/1752621.html com组件将维护一个称作是引用计数的数值.当客户从组件取得一个接口时,此引用计数值将增1.当客户使用完某个接口后,组件的引用计数值将减1.当引用计数值为0时,组件即可将自己从内存中删除.     为什么要选择为每一个接口单独维护一个引用计数而不是针对整个组件维护引用计数呢? 主要有两个原因:一是使程序调试更为方便:另外一个原因是支持资源的按需获取. 1程…
一直以来都对智能指针一知半解,看C++Primer中也讲的不够清晰明白(大概是我功力不够吧).最近花了点时间认真看了智能指针,特地来写这篇文章. 1.智能指针是什么 简单来说,智能指针是一个类,它对普通指针进行封装,使智能指针类对象具有普通指针类型一样的操作.具体而言,复制对象时,副本和原对象都指向同一存储区域,如果通过一个副本改变其所指的值,则通过另一对象访问的值也会改变.所不同的是,智能指针能够对内存进行进行自动管理,避免出现悬垂指针等情况. 2.普通指针存在的问题 C语言.C++语言没有自…
原帖:http://www.cnblogs.com/chain2012/archive/2010/11/12/1875578.html 因为Windows的内核对象也运用了引用计数,所以稍作了解并非无用. 引用计数可以让多个对象共享一个数据,而且免除了跟踪控制权的负担,让对象自己管理自己,当再没有被使用时可以自动删除,也算是一种简易的垃圾回收机制. 另一方面,如果有N多个相同的对象:○=○=○=○=...=○=○ 这样的做法是臃肿且无聊的,所以一个好的做法就是让对象可以共享这一个数据.既可以节省…
一个简单的point坐标类 class Point {public: Point():xval(0),yval(0){} Point(int x,int y):xval(x),yval(y){} int x()const { return xval; } int y()const { return yval; } Point& x(int xv) { xval = xv; return *this; } Point& y(int yv) { yval = yv; return *this;…
内存管理问题 内存管理是编程过程中的一个经典问题,早期在 C 语言时代,几乎都靠 malloc/free 手动管理内存.随着各个平台的发展,到现在被广泛采用的主要有两个方法: 引用计数 (ARC,Automatic Reference Counting) GC (Garbage Collection) 管理方法 ARC/GC 因为 Java 的流行,GC 被广泛的认知.GC 简单的说是定期查找不再使用的对象,释放对象占用的内存. 基于 GC,申请的对象不需要手动释放,只需要确认对象在不再需要时,…
当一个所有者(owner,其本身可以是任何一个Objective-C对象)做了以下某个动作时,它拥有对一个对象的所有权(ownership): 1. 创建一个对象.包括使用任何名称中包含“alloc”.“new”.或者“copy”的方法. 2. 保留(retain)一个对象. 一个对象可以有多个所有者,一个所有者也可以拥有多个对象. 相应的,引用计数增减的基本规则是: 1.当所有者创建一个对象时,该对象的引用计数为1. 2.当所有者保留它时,该对象的引用计数加1. 3.当所有者释放(releas…
一.智能指针学习总结 1.一个非const引用无法指向一个临时变量,但是const引用是可以的! 2.C++中的delete和C中的free()类似,delete NULL不会报"double free"的oops. int main(int argc, char **argv) { int i; int *p = new int; delete p; p = NULL; delete p; ; } 3.智能指针的实现思想:使用可以自动销毁的局部对象来描述不可以自动销毁的位于堆空间中的…
以下是关于内存管理的学习笔记:引用计数与ARC. iOS5以前自动引用计数(ARC)是在MacOS X 10.7与iOS 5中引入一项新技术,用于代替之前的手工引用计数MRC(Manual Reference Counting)管理Objective-C中的对象[官方也叫MRR(Manual Retain Release)].如今,ARC下的iOS项目几乎把所有内存管理事宜都交给编译器来决定,而开发者只需专注于业务逻辑. 但是,对于iOS开发来说,内存管理是个很重要的概念,如果先要写出内存使用效…
Python 对象的引用计数和拷贝 Python是一种面向对象的语言,包括变量.函数.类.模块等等一切皆对象. 在python中,每个对象有以下三个属性: 1.id,每个对象都有一个唯一的身份标识自己,可通过内建函数id(obj)查看. 2.type,对象的类型决定了该对象可以保存什么类型的值,可用内建函数type(obj)查看: 3.value,即对象的值. 下面是一个例子: >>> str = "hello world" >>> type(str…