首先我们带着几点疑问去看文章:
- 值类型(结构体、枚举) 和 引用类型 class 在内存中是如何存储的?
- 值类型和引用类型性能上有什么不同?
- 如果两者混合,会发生什么?比如struct 包含了 class 对象。
- 到底该使用哪个呢?
值类型的定义
- 值类型直接存储到栈中。每个值类型的变量持有自己的数据,之间互不影响。
- 引用类型通过指针引用数据(存储在堆中),多个变量可指向同一数据,当操作某一变量时会影响其他变量。
值类型涉及到值拷贝,引用类型涉及到内存分配,引用计数。接下来我们大致了解一下内存段。