shared_ptr::operator->返回的是T*类型指针,非const T*指针。因此通过const shared_ptr&类型的ptr可以直接调用T各个原始的方法,不用担心const与非const问题。具体shared_ptr::operator->实现如下,摘自boost1.52.0版本...
分类:
其他好文 时间:
2014-07-09 23:34:42
阅读次数:
194
1、定义shared_ptr的作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删除。这在非环形数据结构中防止资源泄露很有帮助。aut...
分类:
编程语言 时间:
2014-07-09 00:36:15
阅读次数:
250
不可否认,资源泄露(resource leak)曾经是C++程序的一大噩梦.垃圾回收 机制(Garbage Collection)一时颇受注目.然而垃圾自动回收机制并不能 满足内存管理的即时性和可视性,往往使高傲的程序设计者感到不自在. 况且,C++实现没有引入这种机制...
分类:
编程语言 时间:
2014-07-08 23:45:57
阅读次数:
348
动态内存与智能指针(2)
直接管理内存
void fun1()
{
//此new表达式在自由空间构造一个int型对象,并返回指向该对象的指针
int *pi1=new int; //pi指向一个动态分配、未初始化的无名对象
string *ps3=new string; //初始化为空string
int *pi2=new int; ...
分类:
编程语言 时间:
2014-07-08 15:51:21
阅读次数:
269
macro :#define list_entry(ptr,type,member) \ ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))功能 从一个结构的成员指针找到其容器的指针原理: ptr是指向type结构体...
分类:
其他好文 时间:
2014-07-06 23:16:44
阅读次数:
318
前言 前两天学习了weak_ptr以后还是不甚明了,一则需要实际应用去锤炼,二来就是不懂观察者模式。 正文 观察者模式又叫发布-订阅模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象,这个主题对象在状态发生改变时,会通知所有的观察者对象,使他们能够自动更新自己。通过一张visi....
分类:
编程语言 时间:
2014-07-06 20:37:57
阅读次数:
260
1.UPX壳我们先来看一下数据是怎么被解压出来的,首先刚进入外壳时,就有这么几句代码:/*462A40*/ pushad/*462A41*/ mov esi,43F000/*462A46*/ lea edi,dword ptr ds:[esi+FFFC2000]/*462A4C*/ mov dwor...
分类:
其他好文 时间:
2014-07-06 20:06:24
阅读次数:
249
一、智能指针
tr1::shared_ptr和tr1::weak_ptr。前者的作用有如内置指针,但会记录有多少个tr::shared_ptrs共同指向同一个对象,这便是所谓的引用计数。一旦最后一个这样的指针被销毁,也就是一旦某一个对象的引用计数为0,这个对象会被自动删除。这在非环形数据结构中防止资源泄露很有帮助,但如果两个或多个对象内含tr1::shared_ptrs并形成环状,...
分类:
其他好文 时间:
2014-07-06 11:43:58
阅读次数:
186
爱加密作为国内最专业的移动应用保护平台,提供的加密服务可以实现从源头上保护App应用的安全,其针对安全的四大功能:1、防逆向分析,即防止通过APKTool、IDAPro等反编译工具破解DEX文件,从而获取APK源代码,保护代码层安全;2、防恶意篡改,即校验APK完整性,自动终止运行被篡改的APK,应用被二次打包后,植入恶意代码后都无法使用,杜绝盗版应用的出现;3、防内存窃取,即防止通过gdb、gcore,从内存中截取dex文件,获取代码片段,从而反编译还原APK进行不法操作;4、防动态跟踪,即防止通过ptr...
分类:
移动开发 时间:
2014-07-06 08:57:35
阅读次数:
313
如下的代码,虽然使用了智能指针 shared_ptr , 但是还是可能泄漏资源。
processWidget(shared_ptr(new Widget), priority());
上述函数有两个参数,第一个是 shared_ptr, 第二个是纯粹是 priority()函数的调用。
调用时,编译器必须创建代码,包括如下三件事情:
调用 priority执行 new Widg...
分类:
其他好文 时间:
2014-07-02 07:01:57
阅读次数:
180