在Swift中,String
和Array
被实现为struct
而且,struct
正在堆栈存储器中创建。
而且,与堆内存相比,堆栈内存的大小非常有限(Is the stack size of iPhone fixed?)。
这还意味着吗?
String
的长度受堆栈存储器大小的限制吗?Array
保留的所有元素的总大小受堆栈内存大小限制吗?答案 0 :(得分:4)
Array
,String
和其他所有动态调整大小的集合(ArraySlice
,Substring
,Set
,Dictionary
等)实现为包含对堆分配的缓冲区的引用的结构。
Array
所做的几乎所有事情都是其内部缓冲区中已经存在的功能。但是Array
结构负责实现在Swift世界中普遍依赖的写时复制功能。