书籍中都提到:
在.net中,值类型存储在堆栈空间中;引用类型存储在堆空间中而堆栈是向上生长的,越早申明的值应该在高地址内存空间中但是,我在本机上测试,却发现
我的值类型是向上生长的,大感郁闷啊!!!!
比如说:
int x,y,z
我然后去取它们的地址,然后将地址转换成整数
得出:
1242752,1242756,1242760
为什么了?希望高手给我帮助我解决这个问题啊
呵呵
谢谢了
在.net中,值类型存储在堆栈空间中;引用类型存储在堆空间中而堆栈是向上生长的,越早申明的值应该在高地址内存空间中但是,我在本机上测试,却发现
我的值类型是向上生长的,大感郁闷啊!!!!
比如说:
int x,y,z
我然后去取它们的地址,然后将地址转换成整数
得出:
1242752,1242756,1242760
为什么了?希望高手给我帮助我解决这个问题啊
呵呵
谢谢了
解决方案 »
- textbox的EnableViewState设置false为什么提交还是保存了控件的value
- asp.net中,如何获得客户端的信息,比如:屏幕分辨率,IP,浏览器类型等等,越多越好
- 使用 uri 可不可以得到这样格式的域名?郁闷中......
- 在GridView中怎样实现分页功能,
- 如何取得当前页的HTML内容
- 在数据访问层,如果打开连接后,不关闭,.NET回收该connection资源会在什么时候?
- 有难度的问题!根据dropdownlist中的取值变化datagrid中的其他列的值.注意:dropdownlist中的值不是主键值.
- ==如何使VS.NET2005不使用虚拟目录...
- 那位高手知道这个奇怪的问题?
- 怎么样判断自动下载控件
- 解决方案里面每次添加现有项,VS.NET总会自动给加上一句代码,怎么办?
- 分析一下,它们的区别!!
如果你在申明Main方法的时候加上unsafe就可以用指针了
[STAThread]
unsafe public static void Main(string[] args)
{
int x;
int y;
int z;
int a,b,c;
string m;
string n;
Console.WriteLine("Address of x: {0},{3}Address of y: {1},{3}Address of z: {2}",(int)(&x),(int)&y,(int)&z, Environment.NewLine);
Console.WriteLine("Address of a: {0},{3}Address of b: {1},{3}Address of c: {2}",(int)(&a),(int)&b,(int)&c, Environment.NewLine);
Console.ReadLine();
}
}
输出:
Address of x: 1242772,
Address of y: 1242768,
Address of z: 1242764,
Address of a: 1242760,
Address of b: 1242756,
Address of c: 1242752你是不是把变量输出的顺序搞反了??
这些在栈中的位置并不是按照顺序的,有随机性===============================
很奇怪:
1.声明的变量<=4个话,向上依次分配空间
例:int x,y,z,h;
得出 1242780,1242784,1242788,1242792;
2.变量大于四
正常情况下:按向下分配空间 如:1242792,1242788,1242784,1242780,1242776;指针运算有误的时候,会发生向上分配的情况;