《DotNet中的内存分配.ppt》由会员分享,可在线阅读,更多相关《DotNet中的内存分配.ppt(52页珍藏版)》请在三一办公上搜索。
1、.Net中的内存分配,广州微软技术中心2023年11月7日,01,02,03,程序运行与内存,数据类型转换,数组和集合,程序运行与内存,数据的三要素,二进制值的解析方式,代码中二进制值的指向,数据的二进制值,强数据类型的编程语言:关系不变,程序运行与内存划分,当前执行代码地址,值类型与引用类型,标识符的指向就是数据的数值,标识符的指向是数据的堆中地址,值类型示例,class Demo public static void Main()System.Int32 i=10;i+;System.Int32 j=i;j=i+j;,值类型示例,当前执行代码地址:,代码段,栈段,堆段,值类型示例,当前执行
2、代码地址:0,代码段,栈段,堆段,值类型示例,当前执行代码地址:1,代码段,栈段,堆段,值类型示例,当前执行代码地址:1,代码段,栈段,堆段,值类型示例,当前执行代码地址:2,代码段,栈段,堆段,值类型示例,当前执行代码地址:3,代码段,栈段,堆段,值类型示例,当前执行代码地址:4,代码段,栈段,堆段,值类型示例,当前执行代码地址:5,代码段,栈段,堆段,引用类型示例,class MyClass public int data=10;,class Demo public static void Main()System.Int32 i=10;System.Int32 j=i;MyClass m
3、c1=new MyClass();mc1.data=20;MyClass mc2=mc1;mc2.data=30;,引用类型示例,当前执行代码地址:0,代码段,栈段,堆段,引用类型示例,当前执行代码地址:1,代码段,栈段,堆段,引用类型示例,当前执行代码地址:2,代码段,栈段,堆段,引用类型示例,当前执行代码地址:3,代码段,栈段,堆段,引用类型示例,当前执行代码地址:4,代码段,栈段,堆段,引用类型示例,当前执行代码地址:5,代码段,栈段,堆段,引用类型示例,当前执行代码地址:6,代码段,栈段,堆段,引用类型示例,当前执行代码地址:7,代码段,栈段,堆段,静态成员示例,class MyCla
4、ss public int data=10;public static int sData=50;,class Demo public static MyClass sMc=null;public static void Main()MyClass mc1=new MyClass();mc1.data=20;sMc=mc1;MyClass mc2=sMc;mc2.data=MyClass.sData;,静态成员示例,当前执行代码地址:0,代码段,栈段,堆段,静态成员示例,当前执行代码地址:1,代码段,栈段,堆段,静态成员示例,当前执行代码地址:2,代码段,栈段,堆段,静态成员示例,当前执行代码
5、地址:3,代码段,栈段,堆段,静态成员示例,当前执行代码地址:4,代码段,栈段,堆段,静态成员示例,当前执行代码地址:5,代码段,栈段,堆段,静态成员示例,当前执行代码地址:6,代码段,栈段,堆段,程序运行与内存小结,代码示例,int变量赋值示例 class变量赋值示例 struct变量赋值示例 复合类型变量赋值示例 静态字段成员示例,数据类型转换,数据的三要素,二进制值的解析方式,代码中二进制值的指向,数据的二进制值,强数据类型的编程语言:关系不变,数据类型转换,TypeA y;TypeB X;x=(TypeB)y,数组和集合,数组示例,class Demo public static vo
6、id Main()int arr;arr=new int2;arr0=10;int i=arr1;,数组示例,当前执行代码地址:0,代码段,栈段,堆段,数组示例,当前执行代码地址:1,代码段,栈段,堆段,数组示例,当前执行代码地址:2,代码段,栈段,堆段,数组示例,当前执行代码地址:3,代码段,栈段,堆段,数组示例,当前执行代码地址:4,代码段,栈段,堆段,数组示例,当前执行代码地址:5,代码段,栈段,堆段,交错数组示例,class Demo public static void Main()int arr;arr=new int2;arr0=new int1;int i=arr10;,交错数组示例,当前执行代码地址:0,代码段,栈段,堆段,交错数组示例,当前执行代码地址:1,代码段,栈段,堆段,交错数组示例,当前执行代码地址:2,代码段,栈段,堆段,交错数组示例,当前执行代码地址:3,代码段,栈段,堆段,System.Collections ArrayListHashtableQueueStack,谢谢,