手动内存管理(MRC)带来的问题:算法
1.0 因为开发者疏漏或不能正确的释放内存而致使的内存泄漏,从而引发程序的崩溃工具
2.0 因为指针的处处传递而没法肯定什么时候能够释放该指针所 指向的内存块。假如代码中某个位置释放了内存,而另外一些地方还在使用指向这块内存的指针, 那么这些指针就变成了所谓的“野指针”(wild pointer)或者“悬空指针”(dangling pointer),对 这些指针进行的任何读写操做都会致使不可预料的后果。 spa
3.0 著名的内存检查工具,好比Rational Purify、Compuware BoundsChecker和英特尔的Parallel Inspector等 设计
自动内存管理(ARC):指针
1.0 从设计方法的角度而衍生了相似于内存引用计数之类的方法(一般被称为“智能指针”) 内存
2.0 在语言级别引入自动垃圾回收算法(Garbage Collection,简称GC) 开发
2.1:所谓垃圾回收,即全部的内存分配动做都会被在运行时记录,同时任何对 该内存的使用也都会被记录,而后垃圾回收器会对全部已经分配的内存进行跟踪监测,一旦发现有些内存已经再也不被任何人使用,就阶段性地回收这些没人用的内存。 it