轻量级指针Binder的学习历程爬到驱动的半山腰明显感觉越来越陡峭,停下业务层的学习,补补基础层知识吧,这首当其冲的就是智能指针了,智能指针的影子在Android源码中随处可见。打开frameworkds/rs/cpp/util,RefBase.h和StrongPointer.h两个文件,代码多读几遍都能读懂,可是串起来总感觉摸不到骨架,把不住主线。闭上眼零零星星的点串不成一条线。究其原因应该是此处...
分类:
其他好文 时间:
2016-06-13 06:37:42
阅读次数:
230
1利用栈对象自动释放(可以禁止析构函数就不能产生栈对象了哦 小技巧) 利用栈对象出作用域自动释放的特性构造一个空的智能指针类 2解决智能释放问题,只要这样就不用手工delete类指针了 在智能指针类的析构函数里面delete对象成员去对象里面释放垃圾指针等.. 3解决被智能指针代理的真实对象的函数的 ...
分类:
其他好文 时间:
2016-06-05 23:01:19
阅读次数:
193
在c++98中,智能指针通过一个模板“auto_ptr”来实现,auto_ptr以对象的方式来管理堆分配的内存,在适当的时间(比如析构),释放所获得的内存。这种内存管理的方式只需要程序员将new操作返回的指针作为auto_ptr的初始值即可,程序员不能显式的调用delete。如 auto_ptr(n ...
分类:
编程语言 时间:
2016-06-01 19:50:55
阅读次数:
184
C++11目前已经引入了unique_ptr, shared_ptr, weak_ptr等智能指针以及相关的模板类enable_shared_from_this等。智能指针作为一种类对象,它具有C++中一般指针(build-in/raw)的特性,同时它可以管理用户用new创建的对象。一般的智能指针都定义为一个模板类,它的类型由被管理的对象类型指定,内部包含了一个指向该对象的裸指针。
一句...
分类:
编程语言 时间:
2016-05-30 15:08:21
阅读次数:
295
java的内存回收机制是很高效的,对软件产生的额外影响很小。而在C++中的大多数智能指针都是采用的引用计数的策略实现,当计数到0时,将所指向的指针删除。这种智能指针当应用到比较大的对象或者动态内存分配的次数非常少时。对软件的性能不会有多大的影响,反而提高了对内存的使用效率。可是一旦使用动态内存分配的 ...
分类:
编程语言 时间:
2016-05-25 20:40:44
阅读次数:
203
记录一下:昨天加班到晚上12点都没找到原因,出现奇怪的错误,今天上午偶然发现了问题所在。 事情经过是: 我之前测试无误的COM,当时是在控制台下,然后昨天想把它用在Qt中,理论上是没有任何问题的,但是加进去在使用智能指针时始终出现这个错误 百思不得其解,怀疑了各种情况:多线程的影响,成员函数指针头文 ...
分类:
编程语言 时间:
2016-05-25 13:21:12
阅读次数:
144
什么是智能指针?智能指针实质上是一个类,定义一个类来封装资源的分配和释放。这个类的构造函数中传入一个指针,完成资源的分配和初始化。在析构函数中释放传入的该指针,完成资源的释放。为什么要用智能指针?智能指针就是智能,自动化的管理指针所指向的动态资源。例如以下..
分类:
其他好文 时间:
2016-05-24 22:57:47
阅读次数:
458
??
shared_ptr是包装了new操作符在堆上分配的动态对象,能够保证动态创建的对象在任何时候都可以被正确的删除,它实现的是引用计数型的智能指针,可以被自由的拷贝和赋值,在任意的地方共享它,当没有代码使用(引用计数为0时)它时才可以被删除。
??
shared_ptr可以被安全的放到标准容器中,并弥补了auto_ptr因为转移语义而不能把指针作为STL容器元素的缺陷。
...
分类:
其他好文 时间:
2016-05-18 18:44:57
阅读次数:
328
说起指针相信大家一定不陌生,那么智能指针呢?首先,我们来看看,为什么要有智能指针?例如voidTest2()
{
int*p1=newint(2);
boolisEnd=true;
//...
if(isEnd)
{
deletep1;
return;
}
//...
deletep1;
}在我们开辟空间时,在不用时,应该将其释放掉,但是代码中经常会忘掉释..
分类:
其他好文 时间:
2016-05-13 15:39:33
阅读次数:
216
C/C++——跟我重写智能指针auto_ptr模版类...
分类:
编程语言 时间:
2016-05-12 15:18:47
阅读次数:
192