内存管理的理解

简介: 内存管理的理解

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进行修饰,避免循环引用,造成内存泄漏。

相关文章
|
7月前
|
存储 C语言 C++
C++:C/C++内存管理
C++:C/C++内存管理
57 0
|
4月前
|
存储 编译器 C语言
内存管理【C++】
内存管理【C++】
|
4月前
|
存储 编译器 C语言
【C++】C\C++内存管理
【C++】C\C++内存管理
【C++】C\C++内存管理
|
6月前
|
存储 编译器 Linux
【C++】:C/C++内存管理
【C++】:C/C++内存管理
40 0
|
7月前
|
存储 编译器 Linux
|
存储 编译器 C语言
【C++】C/C++内存管理:
1.C中的malloc、realloc、calloc和free函数: 【面试问题】 malloc、calloc和realloc的区别是什么?
74 0
|
7月前
|
存储 C语言 C++
【c++】C/C++内存管理
【c++】C/C++内存管理
【c++】C/C++内存管理
|
编译器 程序员 C语言
|
7月前
|
存储 Java C语言
c++内存管理
c++内存管理
63 0
|
C++ 容器
C++ 内存管理 基本部分
不能直接调用构造函数,但是可以直接调用析构函数
73 0

热门文章

最新文章