美文网首页
Swift中堆(heap)和栈(stack)的区别

Swift中堆(heap)和栈(stack)的区别

作者: 职场喵小喵 | 来源:发表于2021-06-16 13:50 被阅读0次

1、内存空间分为堆空间和栈空间

2、堆->引用类型(对象、函数、闭包) 栈->值类型(结构体、枚举、元组)

3、值类型赋值->深拷贝 引用类型赋值->浅拷贝

let a = 1
let c = a
// 值类型赋值会生成一个全新的c
// 引用类型赋值则是指向之前的对象的内存地址

4、结构体与类的区别

// 结构体
struct personT{
    var  age = 10
    var name = "张三"
}

var pt = personT()
var pt1 = pt
pt1.age = 20
print(pt.age) //10

// 类
class personC{
    var  age = 10
    var name = "张三"
}
let pc = personC()
let pc1 = pc
pc1.age = 30
print(pc.age)//30

/* 分析
 定义两个模型,一个是结构体,一个是类
 结构体是存在于栈中的值类型,赋值相当于深拷贝即拷贝一个全新的模型
 类是存在于堆中的引用类型,赋值相当于浅拷贝之前模型的内存地址<所以定义模型时可以用let 定义 定义pc其实是personC() 的内存地址 - 后续修改也是拿到内存地主对应的模型进行修改>
 swift建议都使用struct, swift对结构体已经进行了很大的优化
 */

相关文章

  • Swift中堆(heap)和栈(stack)的区别

    1、内存空间分为堆空间和栈空间 2、堆->引用类型(对象、函数、闭包) 栈->值类型(结构体、枚举、元组) 3、...

  • JS-深拷贝和浅拷贝

    要了解其本质区别,就需要了解堆和栈,值与引用的概念及区别 1.堆(stack)和栈(heap) stack为自动分...

  • 【Javascript】探究javascript中的堆/栈/任务

    堆/栈/队列 在javascript中,存在调用栈 (call stack)和内存堆(memory heap) ,...

  • 关于JS的堆和栈的理解

    一、堆(heap)和栈(stack) 栈(stack)会自动分配内存空间,会自动释放。堆(heap)动态分配的内存...

  • 理解js里堆和栈的意义

    一、 堆(heap)和栈(stack) 栈(stack)会自动分配内存空间,会自动释放。堆(heap)动态分配的内...

  • JVM内存模型

    JVM的内存中的堆(Heap)和栈(Stack)有什么区别 Stack是存放方法的局部变量的内存空间,每个方法都会...

  • js/jquery 学习笔记

    理解JavaScript中的堆和栈 这里先说两个概念:1、堆(heap)2、栈(stack)堆是堆内存的简称。栈是...

  • 堆和栈(Heap and Stack)的区别!

    堆和栈最明显的区别是: 堆(Heap):队列优先,先进先出(FIFO—first in first out); 栈...

  • 二、JavaScript 中的堆内存和栈内存

    1 栈 stack”和“堆 heap” 简单的来讲,stack上分配的内存系统自动释放,heap上分配的内存,系统...

  • 堆栈

    栈 (stack)和 堆 (heap) stack 为自动分配的内存空间,它由系统自动释放;而heap则是动态分...

网友评论

      本文标题:Swift中堆(heap)和栈(stack)的区别

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