1.拷贝分析

1.浅拷贝与深拷贝

所有的值类型,无论深拷贝还是浅拷贝,都是两个独立的类型,不会相互影响,但如果是引用类型的(结构体是值类型,但他的内部可能有引用类型),如果是浅拷贝的话,那么修改会相互影响的。如果是深拷贝的话,那么就像值类型一样,会是两个完全独立的属性,不会互相影响。

2.浅拷贝实例

3.string(特殊的值类型)

string的底层其实也是一个指针(引用类型),所以他的复制过程,实际是浅拷贝,但是由于不可变性,所以实现了类似于深拷贝的效果。意思是如果你有手段通过修改s2的值,那么s1的值确实会随着s2的值改动,但是由于不可变性,所以做不到。我们就认为他实现了深拷贝(两份完全独立的对象)的效果了。

1.为何这么设计

4.值类型与引用类型

2.堆栈分析

1.什么对象会存堆上

2.类型与堆栈的关系(没有关系)

不固定的,不是说值类型就在栈上,引用类型就在堆上,内存会进行逃逸分析的。