如果将String和Array实现为struct,这是否意味着它们的大小也受堆栈大小的限制?

时间:2019-07-07 05:12:49

标签: swift

在Swift中,StringArray被实现为struct

而且,struct正在堆栈存储器中创建。

而且,与堆内存相比,堆栈内存的大小非常有限(Is the stack size of iPhone fixed?)。

这还意味着吗?

  1. String的长度受堆栈存储器大小的限制吗?
  2. Array保留的所有元素的总大小受堆栈内存大小限制吗?

1 个答案:

答案 0 :(得分:4)

ArrayString和其他所有动态调整大小的集合(ArraySliceSubstringSetDictionary等)实现为包含对堆分配的缓冲区的引用的结构。

Array所做的几乎所有事情都是其内部缓冲区中已经存在的功能。但是Array结构负责实现在Swift世界中普遍依赖的写时复制功能。