对于值类型,是存放在堆栈上的。对于引用类型是存放到栈上的。
现在有个问题,加入现在一个类里面有值类型,那么这个值类型是存放在哪里呢。
举个例子
class MyClass1
{
int a=0;
}
对于这个类,MyClass1 mc=new MyClass1();这样的话,mc是在堆栈上的,MyClass1的实例是在堆上的。那a在哪?
这个问题不太明白,大家帮忙啊
现在有个问题,加入现在一个类里面有值类型,那么这个值类型是存放在哪里呢。
举个例子
class MyClass1
{
int a=0;
}
对于这个类,MyClass1 mc=new MyClass1();这样的话,mc是在堆栈上的,MyClass1的实例是在堆上的。那a在哪?
这个问题不太明白,大家帮忙啊
解决方案 »
- asp.net中如何显示数据表中的单位结构图
- 请教SQLite数据库读写BLOB字段。
- splitContainer 的主来吧,阿门
- 如何在C#中把逗号写入cookie?
- 请问:如何使用c#.net生成柱状图....
- 怎么把一个字符串传给(ref sbyte xxxx)参数?
- 新手问题.我新了vs.net后。新建web项目时,出错。。下面是出错的提示,大家帮我看是怎么问题。谢谢!
- DataGrid的Item属性我这里怎么没有,怎么样才能使用该属性?
- 高分求SMARTGRID FOR VS2005控件
- 在C#中如何调用WINDOWS里的命令或执行某个程序呀!
- 严重怀疑 string 会内存泄露
- 在线等 谢谢!希望各位能帮帮忙啊!
如果用的是.net应该不是这样放的吧
framework内存是自己管理的,
记忆中好像是放在托管堆上的,int a=0;a 也应该放在托管堆上
new MyClass1();就是在内存堆上开开辟4个字节的内存空间用于存放int a的值。
如果是值类型,比如是struct,那就是:Stack Managed Heap ms
a = 0;
那mc是存放在哪的呢? 我看书说是放到栈上的。但如果mc是放到类里面呢,他又是存放在哪的,有点晕
MyClass1 mc=new MyClass1();
值类型ms,引用类型mc,他们的变量存放在栈上引用类型对象 MyClass1的实例 存放在GC堆上的,因为引用对象用new分配到GC堆上时有索引同步块和类型指针2个字段
而值类型MyStruct是分配在栈上的对于引用类型中申明的值类型是存放在堆中的,比如你上面的a;因为一个引用类型实例中包含的索引同步块和类型指针2个字段还有非静态成员,这个成员就包括值类型和引用类型.要注意的是说的值类型是struct,而非是int.因为C#中一个字段总是在一个类型中的,所以int x是不会直接出现在栈中的,而总是在一个值类型或一个引用类型中.
那是不是只有struct中的值类型才是放到栈上的,而别的都是放到堆上的。
class MyClass1
{
int a=0;
} 如果这句 MyClass1 mc=new MyClass1(); 是在struct中,mc是存放在栈上,否则是在堆上。 是吗
lz需要了解下内存模型,有很多C++的书会解释这个的。