Analyze查找静态内存泄漏

使用Analyze查找静态内存泄漏,Analyze静态分析只是一个理论上的预测过程,其查找到的内存泄漏称为可疑泄漏点,之所以称为“可疑泄漏点”,是因为这些点未必一定泄漏,确认这些点是否泄漏还要通过Profile动态分析工具Instruments中的LeaksAllocations跟踪模板。
Analyze的主要优势在于静态分析内存泄漏和代码的逻辑错误
Analyze的主要劣势在于分析方法是根据代码上下文结构在编译过程中进行分析,所以分析结果不一定百分百准确。

官方Xcode使用Analyze介绍

操作入口:Xcode——菜单栏——Product——Analyze
Analyze查找静态内存泄漏

Analyze查看的问题通常包含三类

  • Dead store:声明错误,关于代码中创建的变量没有被使用,或是初创建的对象初始化了初值没有被使用过。
  • Memory(Core Foundation/Objective-C):内存管理错误,关于代码中的变量可能没有被释放,会造成内存被占用,或是调用了让某个对象引用计数加1的函数,但没有调用相应让其引用计数减1的函数。
  • Memory error:逻辑错误,关于代码中的变量不是期待中的的值变量。

Analyze查找静态内存泄漏

名词解释

  • 静态分析:是指程序没有运行的状态下,根据代码的上下文的语法结构,让编译器分析内存情况,检查是否存在内存泄露。

  • 上下文:即联系文本(context,或concatenate-text),也可以称为引用区,或引用池。也就是一段代码要完整执行,不仅有内在的关联变量,也涉及到的所有外部的变量,这些所有的变量值的集合就叫做上下文。