Swift中空数组字面量是否会分配零容量存储空间?
Swift中空数组字面量的存储空间分配问题
执行代码let arr: [Int] = []时,不会分配任何用于存储元素的缓冲区。
Swift的数组实现做了针对性优化:所有同类型的空数组都会复用一个全局共享的空实例,这个实例的容量为0,完全不占用堆内存空间。
你可以通过简单的代码验证这一点:
let arr: [Int] = [] print(arr.capacity) // 输出:0
capacity返回0,直接说明该数组没有分配可容纳元素的内存缓冲区。
另外,这种优化不局限于字面量创建的空数组,调用Array<Int>()初始化的空数组也会复用同一个共享实例,避免无意义的内存分配操作。
内容的提问来源于stack exchange,提问作者Isaaс Weisberg
相关产品推荐
相关产品推荐

