问个c#值类型引用类型内存分配问题
最近在学数据类型,关值类型和引用类型我是这样认为的,大家看看有没有什么问题 !
比如这样一个程序:
void Main (string[]ss)
{
int a=10;
char b='b';
int[] arr=new int[5];
}
像值类型 a b 在线程栈中 就分别分配一个 4个字节(32位)的内存地址给a , 然后分配一个字节的栈内存给 b。
像引用类型的arr 在托管堆中, 分配一个5*4个字节的堆内存给arr, 然后再栈中存储这个5*4个字节的堆内存的引用 也就是地址
不知道我上面说的2句话对不对? 如果都是对的,像int这样的值类型,栈给了他4个字节来保存,那引用类型的地址在栈中是用多大的空间来保存的呢?保存的是不是十六进制表示的内存地址?
比如这样一个程序:
void Main (string[]ss)
{
int a=10;
char b='b';
int[] arr=new int[5];
}
像值类型 a b 在线程栈中 就分别分配一个 4个字节(32位)的内存地址给a , 然后分配一个字节的栈内存给 b。
像引用类型的arr 在托管堆中, 分配一个5*4个字节的堆内存给arr, 然后再栈中存储这个5*4个字节的堆内存的引用 也就是地址
不知道我上面说的2句话对不对? 如果都是对的,像int这样的值类型,栈给了他4个字节来保存,那引用类型的地址在栈中是用多大的空间来保存的呢?保存的是不是十六进制表示的内存地址?
...全文
相关推荐
C#基础概念二十五问(压缩版)
**装箱与拆箱**:装箱是将值类型转换为对应的引用类型,拆箱则是反向操作。这两个过程会涉及到额外的内存分配和回收。18.
浅谈C#中的值类型和引用类型
"本文主要探讨了C#编程语言中的值类型和引用类型,包括它们的基本概念、内存分配、以及装箱和拆箱操作。"在C#编程中,所有数据都属于两种基本类型之一:值类型或引用类型。这两种类型在内存管理、赋值和
c# 引用类型与值类型的区别详解
C#中的引用类型与值类型是两种基本的内存管理和对象表示方式,对编程实践有着深远的影响。它们的区别主要体现在内存分配、对象复制、生命周期以及性能等方面。首先,值类型(如int、char、float和
C#值类型与引用类型区别
这种特性使得值类型通常在处理小型数据时更高效,因为它们的内存分配和回收速度较快。相对的,引用类型包括类(class)、接口(interface)和数组。
值类型和引用类型的区别
- **引用类型**: - 传递的是引用,因此在大多数情况下性能较好。 - 如果引用类型过大,频繁修改会导致内存碎片化问题。#### 6.


