C#内存分配

1、进程堆、线程栈

一个进程一个堆,一个线程一个栈

2、引用类型对象在堆里,值类型对象在栈中(其实值类型也可能在堆中,如下2.2所述)。变量在栈中。

2.1引用类型对象里的值类型,是在堆中的。

2.2值类型对象里的引用类型对象,在堆中。

2.3任何引用类型对象都在堆中。

MemberwiseClone()——浅拷贝:只拷贝引用

深拷贝:不仅拷贝引用,还拷贝引用类型的值。三种方式:1、直接new   2、所有子类型都用原型模式  3、序列化之后进行反序列化得到全新对象

string类型的“=”操作符是做了重载的,等同于new了一个新的string对象,开辟了新的空间。实际上string类型的值是不可以修改的,享元模式也由此而来。

为什么string类型不能修改?

posted @ 2022-12-08 23:16  follow_discoverer  阅读(100)  评论(0编辑  收藏  举报