程序内存区域:堆 栈 静态存储区
商店和仓库
栈的特征:
数据只能从栈的顶端插⼊和删除
内存中的栈,是由系统管理(.Net框架)。
我们之后会在数据结构中学习写⼀个⾃⼰的栈结构,保存数据。
堆是⼀块内存区域,与栈不同,堆⾥的内存能够以任意顺序存⼊和移除
GC Garbage Collector垃圾回收器
CLR的GC就是内存管理机制,我们写程序不需要关⼼内存的使⽤,因为这些都是CLR帮我们做了。类似新生宿舍楼
这⾥的某些概念,只需要了解和知道的,不需要知道内在核⼼原理,我们知道汽⻋的引擎
是汽⻋的核⼼动⼒来源,我们不需要知道引擎是怎么造。
同样,上述是编译器开发者的事情。
类型被分为两种:
值类型只需要⼀段单独的内存
引⽤类型需要两段内存
注意
当我们使⽤引⽤类型赋值的时候,其实是赋值的引⽤类型的引⽤
如果数组是⼀个值类型的数组,那么数组中直接存储值,如果是⼀个引⽤类型的数组(数组中存储的是引⽤类型),那么数组中存储的是引⽤(内存地址)
c#//新建类 Customer.cs
class Customer {
public string name;
public string address;
public int age;
public string createTime;
public Customer(string name, string address, int age, string createTime) {
this.name = name;
this.address = address;
this.age = age;
this.createTime = createTime;
}
public void Show() {
Console.WriteLine("名字:" + name);
Console.WriteLine("地址:" + address);
Console.WriteLine("年龄:" + age);
Console.WriteLine("创建时间:" + createTime);
}
}
c#//使用 Program.cs
int a = 123;
float b = 34.5 f;
bool c = true;
string name = "zhangsan";
int[] array1 = new int[] { 23,23,11,32,4,2435};
string[] array2 = new string[] {"www","baidu","com"};
Customer c1 = new Customer("张三", "上海", 13, "2022");
//引用对象的改变
Customer c2 = c1;
c1.Show(); //输出中文张三
c2.Show(); //输出中文张三
c2.name = "zhangsan";
c2.Show(); //输出zhangsan
c1.Show(); //输出zhangsan
//将地址清空
c1 = null; //空 空引用 空对象
c2 = null;
本文作者:千纸鹤
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!