C#-数据类型及内存四区

  • C#-数据类型及内存四区已关闭评论
  • 213 次浏览
  • A+
所属分类:.NET技术
摘要

值类型
整数,浮点数,布尔值,字符,枚举,结构体
引用类型
数组,用户自定义的类,接口,委托,object,字符串
值类型与引用类型的区别:
存放地址不同,值类型存放在栈中,引用类型存放在堆中。
内存分布:
在程序运行时,内存分别为四个区域块,分别是:堆区,栈区,全局区,代码区
存放函数内的局部变量,形参和函数返回值,栈区之中的数据的的作用范围过了之后,系统就会回收自动管理栈区的内存(分配内存,回收内存)。
堆区:new字段申请的区域,由C#垃圾回收机制进行回收。
静态区(全局区):静态变量和全局变量的存储区域是一起的,一旦静态区的内存被分配,静态去的内存直到程序全部结束之后才会被释放。
常量区:存放常量(程序在运行的期间不能狗被改变的量)。
代码区:存放程序代码,即CPU执行的机器语言,并且是只读的。

值类型
整数,浮点数,布尔值,字符,枚举,结构体
引用类型
数组,用户自定义的类,接口,委托,object,字符串
值类型与引用类型的区别:
存放地址不同,值类型存放在栈中,引用类型存放在堆中。
内存分布:
在程序运行时,内存分别为四个区域块,分别是:堆区,栈区,全局区,代码区
存放函数内的局部变量,形参和函数返回值,栈区之中的数据的的作用范围过了之后,系统就会回收自动管理栈区的内存(分配内存,回收内存)。
堆区:new字段申请的区域,由C#垃圾回收机制进行回收。
静态区(全局区):静态变量和全局变量的存储区域是一起的,一旦静态区的内存被分配,静态去的内存直到程序全部结束之后才会被释放。
常量区:存放常量(程序在运行的期间不能狗被改变的量)。
代码区:存放程序代码,即CPU执行的机器语言,并且是只读的。