内存管理的理解

简介: 内存管理的理解

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

相关文章
|
9月前
|
存储 编译器 C语言
C++中的内存管理
C++中的内存管理
61 0
|
4月前
|
存储 Linux C语言
C/C++内存管理(上)
C/C++内存管理(上)
60 0
|
5月前
|
C语言 C++
C++(二)内存管理
本文档详细介绍了C++中的内存管理机制,特别是`new`和`delete`关键字的使用方法。首先通过示例代码展示了如何使用`new`和`delete`进行单个变量和数组的内存分配与释放。接着讨论了内存申请失败时的处理方式,包括直接抛出异常、使用`try/catch`捕获异常、设置`set_new_handler`函数以及不抛出异常的处理方式。通过这些方法,可以有效避免内存泄漏和多重释放的问题。
|
9月前
|
存储 编译器 Linux
|
存储 编译器 C语言
【C++】C/C++内存管理:
1.C中的malloc、realloc、calloc和free函数: 【面试问题】 malloc、calloc和realloc的区别是什么?
80 0
|
9月前
|
存储 编译器 程序员
【C++】内存管理
【C++】内存管理
|
9月前
|
存储 编译器 C语言
C++-内存管理
C++-内存管理
54 0
|
存储 程序员 C语言
C 内存管理
C 内存管理。
37 0
|
C++ 容器
C++ 内存管理 基本部分
不能直接调用构造函数,但是可以直接调用析构函数
77 0
|
存储 算法 NoSQL
第4章 内存管理
第4章 内存管理
413 0
第4章 内存管理