内存管理的理解

简介: 内存管理的理解

1.在非ARC的情况下,谁创建谁释放,当对对象进行alloc,new,retain,copy时,需要调用release或autorelease释放。当引用计数为0的时候,会调用dealloc方法销毁当前对象。

2.在ARC的情况下,任何强指针(strong,retain)指向的对象就会被销毁;任何弱指针(assign)指向的对象就不会被销毁;默认情况下对象都是强指针类型。

3.自动释放池是OC的一种内存自动回收机制,可以将一些临时变量通过自动释放池来回收统一释放;内存池autoreleasepool是用于管理那些被声明为autorelease的对象,系统中有成千上万个内存池,系统内存不足时,系统会从栈中取最顶层的池子把引用计数为0的对象释放掉,收回的内存給当前应用程序使用。

自动释放池本身销毁的时候,池子里面所有的对象都会做一次release操作。

在使用block的时候,一定要注意不能在block里面直接对对象进行操作,而是要是要使用block或weak进行修饰,避免循环引用,造成内存泄漏。

相关文章
|
4月前
|
存储 C语言 C++
C++:C/C++内存管理
C++:C/C++内存管理
53 0
|
11月前
|
存储 C语言 C++
|
1月前
|
存储 编译器 C语言
【C++】C\C++内存管理
【C++】C\C++内存管理
【C++】C\C++内存管理
|
3月前
|
Linux C语言 C++
C++内存管理
C++内存管理
13 0
|
4月前
|
安全 程序员 C语言
c内存管理
c内存管理
31 1
|
4月前
|
C++
|
11月前
|
存储 编译器 C语言
【C++】C/C++内存管理:
1.C中的malloc、realloc、calloc和free函数: 【面试问题】 malloc、calloc和realloc的区别是什么?
63 0
|
4月前
|
存储 编译器 程序员
【C++】内存管理
【C++】内存管理
|
C语言 C++
C/C++内存管理
C/C++内存管理
57 0
|
11月前
|
存储 C语言 C++
【C++】C&C++内存管理(上)
【C++】C&C++内存管理(上)