iOS 数据结构

这篇博客探讨了iOS开发中的数据结构,重点比较了数组和链表的特性。数组地址连续,查找速度快但操作效率低,而链表查找速度慢但操作效率高。文章还详细介绍了iOS内存的五个分区,包括栈区、堆区、全局区、常量区和代码区,分析了它们的特点和使用场景。此外,还提到了哈希表在iOS开发中的应用,并指出其提高查找速度的作用。
摘要由CSDN通过智能技术生成
  1. 数组和链表的区别
  • 数组
    地址连续,查找速度快,操作效率低
    存储单元在定义时分配,元素个数固定,内存空间要求高
  • 链表
    地址不连续,查找速度慢,操作效率高
    存储单元在程序执行时动态申请,可按需动态增减
  1. iOS内存分区的情况,五大区域
  • 栈区Stack
    先进后出FILO
    由编译器自动分配和释放
    栈空间多线程不共享
    连续的内存地址,由高向低分配,不会产生碎片
    空间较小,运行速度较快,效率高
    栈是机器系统提供的数据结构,计算机会在底层对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高
  • 堆区Heap
    分配方式类似链表,先进先出FIFO
    一般需要手动分配和释放
    堆内存多线程共享
    不连续的内存地址,由低向高分配,容易产生碎片
    空间较大,运行速度较慢,效率不如栈
    计算机底层并没有对堆的支持,堆是有C/C++函数库提供的,加上碎片问题,导致堆的效率比栈低
  • 全局区
    全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域.data段,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域.bss段
    程序结束后由系统释放
  • 常量区
    常量字符串就
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值