可变String存储在堆中并且不可变存储在堆栈中

时间:2017-06-14 16:19:35

标签: swift stack heap

我阅读了很多文章和文档,但仍然无法完全理解不同数据类型存储在内存中的位置。

你能解释我在记忆可变字符串或任何其他可变类型的位置,例如存储var string: String

不可变字符串或任何其他不可变类型,例如存储了let string: String

你能否同时回答Swift和Objective-C?

1 个答案:

答案 0 :(得分:0)

尤其是低级语言的编译器在编译之前需要了解类型和大小,大小未知的类型在堆中存储为可变的,例如:

var = String::from(" String_name ")

可以更改此字符串类型,而对于var = " String_name"类型的str则不能更改。因此,它存储在堆栈中,并且与堆中存储的堆栈不同,可以快速访问。