书籍中都提到:
在.net中,值类型存储在堆栈空间中;引用类型存储在堆空间中而堆栈是向上生长的,越早申明的值应该在高地址内存空间中但是,我在本机上测试,却发现
我的值类型是向上生长的,大感郁闷啊!!!!
比如说:
    int x,y,z
我然后去取它们的地址,然后将地址转换成整数
得出:
1242752,1242756,1242760
为什么了?希望高手给我帮助我解决这个问题啊
呵呵
谢谢了

解决方案 »

  1.   

    C#里面指针可以在unsafe中做
    如果你在申明Main方法的时候加上unsafe就可以用指针了
      

  2.   

    下面的代码是我在自己机上测试的,结果和你的不一样。class Classes{
        [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你是不是把变量输出的顺序搞反了??
      

  3.   

    对于值类型变量,类似int x,y,z;
    这些在栈中的位置并不是按照顺序的,有随机性===============================
      

  4.   

    再次测试了一下
    很奇怪:
    1.声明的变量<=4个话,向上依次分配空间
    例:int x,y,z,h;
    得出   1242780,1242784,1242788,1242792;
    2.变量大于四
    正常情况下:按向下分配空间 如:1242792,1242788,1242784,1242780,1242776;指针运算有误的时候,会发生向上分配的情况;