美文网首页
内存管理

内存管理

作者: 水中的蓝天 | 来源:发表于2021-01-12 23:39 被阅读0次

内存管理:在计算机中的内存使用是需向系统申请的,使用完之后释放,而这个过程是需要一套管理规则,统称内存管理;OC中的内存管理是通过引用计数技术实现

常见的内存申请一般是通过 malloc 函数实现

malloc介绍:

函数声明:

void *malloc(int size);

说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针

内存的释放都是通过free函数实现

free介绍:

函数声明:

void free(void *block);

即: void free(指针变量);之所以把形参中的指针声明为 void* ,是因为free必须可以释放任意类型的指针,而任意类型的指针都可以转换为void *。

OC对象内存管理之MRC
内存管理之copy
__block内存管理
block的循环引用
内存管理之Tagged Pointer
内存管理之引用计数存储
内存管理之weak指针
内存管理之自动释放池与RunLoop
内存管理之定时器

内存管理修饰符:strong、copy、weak、assign

strong: 强引用,指向的对象引用计数加一
copy: 拷贝根据不同情况有深拷贝和浅拷贝之分
weak用于修饰OC对象
assign用于修饰基本数据类型

assign不能用来修饰对象原因是什么?

  1. 如果对象引用计数大于0,assign修饰的指针不会在对象是方法时指针空赋值操作
  2. assign来声明的一个属性在初始化完赋值实际上是将保留对象分配给不安全的属性;对象在赋值后将被释放
  3. 说白了程序会直接crash

@weakify、@strongify: 剖析

相关文章

  • iOS内存管理详解

    目录 block内存管理 autorelease内存管理 weak对象内存管理 NSString内存管理 new、...

  • 第10章 内存管理和文件操作

    1 内存管理 1.1 内存管理基础 标准内存管理函数堆管理函数虚拟内存管理函数内存映射文件函数 GlobalMem...

  • 操作系统之内存管理

    内存管理 包括内存管理和虚拟内存管理 内存管理包括内存管理概念、交换与覆盖、连续分配管理方式和非连续分配管理方式(...

  • JavaScript —— 内存管理及垃圾回收

    目录 JavaScript内存管理内存为什么需要管理?内存管理概念JavaScript中的内存管理JavaScri...

  • OC - OC的内存管理机制

    导读 一、为什么要进行内存管理 二、内存管理机制 三、内存管理原则 四、MRC手动内存管理 五、ARC自动内存管理...

  • 3. 内存管理

    内存管理 内存管理包含: 物理内存管理; 虚拟内存管理; 两者的映射 除了内存管理模块, 其他都使用虚拟地址(包括...

  • Go语言——内存管理

    Go语言——内存管理 参考: 图解 TCMalloc Golang 内存管理 Go 内存管理 问题 内存碎片:避免...

  • jvm 基础第一节: jvm数据区

    程序内存管理分为手动内存管理和自动内存管理, 而java属于自动内存管理,因此jvm的职能之一就是程序内存管理 j...

  • 内存管理

    内存管理的重要性。 不进行内存管理和错误的内存管理会造成以下问题。 内存泄露 悬挂指针 OC内存模型 内存管理是通...

  • 11-AutoreleasePool实现原理上

    我们都知道iOS的内存管理分为手动内存管理(MRC)和自动内存管理(ARC),但是不管是手动内存管理还是自动内存管...

网友评论

      本文标题:内存管理

      本文链接:https://www.haomeiwen.com/subject/wuyhaktx.html