Int占用多少个字节?

实际上跟平台有关,Int64 平台 == 8字节

1.1求类型占用多少内存

MemoryLayout<Int>.size  == 8 // 实际用到的空间大小
MemoryLayout<Int>.stride  == 8  // 分配占用的空间大小
MemoryLayout<Int>.aligment  == 8 内存对齐,对齐参数:8的倍数

1.2求变量的内存占用多少字节?

var age = 10
MemoryLayout.size(ofValue: age) == 8
MemoryLayout.stride(ofValue: age) == 8
MemoryLayout.aligment(ofValue: age) == 8

Swift枚举中:原始值和关联值变量所占内存是很大区别的

原始值 所占用内存是1

enum Season: Int {
    case spring = 1, summer, autumn, winter
}

因为原始值是不可变的,底层实现类似 0, 1, 2, 3,它的原始值并不存储在枚举变量中,我们使用原始值,Season.spring.rawValue 这个rawValue类似一个方法,从方法中获取这个原始值.

关联值 所占用总内存是40

enum Password {
    case number(Int, Int, Int, Int) // 32
    case other // 1 
}
var pwd1 = Password.number(111,222,3333,99999)
var pwd2 = Password.other

因为关联值是可变的,必须保证足够的内存空间存储,本来32个字节就可以了,为什么要40个字节呢?因为要区分变量是pwd1还是pwd2,因此要加1个字节,因为要内存对齐,所以至少加8个字节