1. auto_ptr 的设计动机:函数操作经常依照下列模式进行:获取一些资源执行一些动作释放所获取的资源那么面对这些资源的释放问题就会出现下面的两种情况:一开始获得的资源被绑定于局部对象,那么当函数退出的时候,这些局部对象的析构函数被自动的调用,从而自动释放掉这些资源;一开始获得的资源是通过某种显...
分类:
编程语言 时间:
2014-06-16 13:43:39
阅读次数:
351
1. 静态内存静态内存是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时完成的,不占用CPU资源。程序中的各种变量,在编译时系统已经为其分配了所需的内存空间,当该变量在作用域内使用完毕时,系统会自动释放所占用的内存空间。变量的分配与释放,都无须程序员自行考虑。eg:基本类型,数组2....
分类:
其他好文 时间:
2014-06-15 17:41:25
阅读次数:
172
首先在架构里面需要明白,如果使用new创建对象的话,我们需要自己释放内存,如果直接用引擎提供的警静态方法,我们可以不做内存管理,引擎自动处理,因为引擎背后有一个自动释放池。通过查看源码可以知道,每个静态方法都会调用autorelease()方法。如果我们需要引擎自动释放一个对象,创建后可以调用该对象...
分类:
其他好文 时间:
2014-06-14 23:41:13
阅读次数:
311
Boost智能指针——scoped_ptrboost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用:#include
#include #include class imple...
分类:
其他好文 时间:
2014-06-13 14:42:54
阅读次数:
299
反初始化在一个类的实例被释放之前,反初始化函数被立即调用。用关键字deinit来标示反初始化函数,类似于初始化函数用init来标示。反初始化函数只适用于类类型。反初始化原理Swift会自动释放不再需要的实例以释放资源。如自动引用计数那一章描述,Swift通过自动引用计数(ARC)处理实例的内存管理。...
分类:
其他好文 时间:
2014-06-09 20:38:14
阅读次数:
323
上一章 我们分析了Cocos2d-x的内存管理,主要解剖了
Ref、PoolManager、AutoreleasePool这三个类,了解了对象是如何自动释放的机制。之前有一个类
Node经常出现在各种场合,不是做为参数就是做为返回值,那么这一章节我们就去看看这个Node类到底在Cocos2d-x里....
分类:
其他好文 时间:
2014-05-31 08:04:28
阅读次数:
355
由于iOS6以上的UIKit不会在内存警告时自动释放视图,所以viewWillUnload和viewDidUnload将不再触发。因此,在iOS6上,开发者需要负责内存警告时将不用到的视图释放。WWDC2012的视频有提到,具体代码如下:1
- (void)didReceiveMemoryWarni...
分类:
其他好文 时间:
2014-05-26 15:49:36
阅读次数:
198
WeakHashMap使用弱引用来作为Map的Key,利用虚拟机的垃圾回收机制能自动释放Map中没有被使用的条目。但是WeakHashMap释放条目是有条件的:首先条目的Key在系统中没有强引用指向;另外,条目的释放是在垃圾回收之后第一次访问这个WeakHashMap时完成的。
而当我们想...
分类:
其他好文 时间:
2014-05-19 21:13:21
阅读次数:
314
在非arc的工程中创建NSMutableArray属性的时候需要注意的是:[[NSMutableArrayalloc]initWithCapacity:2];
正常使用[NSMutableArrayarrayWithCapacity:2]; 会自动释放,需要retain。
分类:
其他好文 时间:
2014-05-16 05:38:00
阅读次数:
303
std::auto_ptr 析构的时候调用 delete
操作符来自动释放所包含的对象boost::scoped_ptr / boost::scoped_array不能传递它所包含的对象的所有权
到另一个作用域指针boost::shared_ptr /boost::shared_array在内部记录...
分类:
其他好文 时间:
2014-05-15 02:01:07
阅读次数:
353