OC 内存管理基础

一. retain和release基本使用

使用注意:

1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作)

2.你不想再使用(占用)某个对象,就应该让对象的计数器-1(让对象做一次release)

3.谁retain , 谁release

4.谁alloc,谁release

如:

int  main()

{

Person *p = [[Person alloc]init];         //计数器加1 ,值为1

[p retain];       // 计数器加1,值为2

[p release];    // 计数器减1 ,值为1

[p release];    // 计数器减1 ,值为0;

return 0;

}

二. 空指针,野指针,僵尸对象

空指针:没有任何东西的指针(存储的东西是nil, Nall0)

给空指针发送消息不会报错

野指针:指向僵尸对象(不可用内存)的指针,给野指针发送消息会报错

错误:EXC_BAD_ACCECC:访问一块坏的内存(已经被回收,已经不可用的内存)

如:int main()

{

Person *p = [[Person alloc]init];      //计数器加1 ,值为1

[p release];          // 计数器减1 ,值为0.

[p release];        // 野指针指向僵尸对象(不可用的内存)

return 0;

}

会报经典错误:EXC_BAD_ACCECC:访问一块坏的内存(已经被回收,已经不可用的内存)

僵尸对象:所占用内存已经回收的对象,僵尸对象不能再使用

经典错误:message  sent  to deallocated  instauce  ox100109a10

意思是:给已经释放的对象发送了一条错误的消息

最新文章

  1. python实战(开发新浪微博应用)
  2. 11个审查Linux是否被入侵的方法
  3. js toString()
  4. 【随笔】从gitHub上获取源码
  5. Javac 手动编译时,出现乱码或编码格式问题
  6. 边工作边刷题:70天一遍leetcode: day 84-1
  7. Homework-10 the Enhanced Version
  8. HDU 3911 Black And White 分段树 题解
  9. Android WebView 调试方法
  10. linux设备驱动程序--类class的实现
  11. ORACLE复杂查询之连接查询
  12. 拦截请求并记录相应信息-springboot
  13. POJ - 1830:开关问题 (开关问题-高斯消元-自由元)
  14. 洛谷P2770 双路DP // 网络流
  15. springcloud-Eureka-服务注册与发现核心组件
  16. Web Performance and Load Test Project错误集
  17. 4种事务的隔离级别,InnoDB怎样巧妙实现?
  18. 用sqoop将mysql的数据导入到hive表
  19. 记一次Eclipse关于JDK和JRE的问题
  20. Spring Tool Suite 创建 SpringMVC+Maven 项目(一)!

热门文章

  1. 搭建LAMP测试环境
  2. SpringMVC——注解的使用与结果跳转方式
  3. Oracle RAC OCR 的管理与维护
  4. 【已解决】Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory 8
  5. H264相关知识
  6. Oracle中函数/过程返回结果集的几种方式
  7. STM32 TIM重映射
  8. 为什么你写的Python运行的那么慢呢?
  9. 团 大连网赛 1007 Friends and Enemies
  10. Linux服务器下没有root权限装Matlab R2013a