void func1()
{
  byte[] cmd = new byte[] { 0x11, 0x03};
}void func2()
{ 
  byte[] cmd ={ 0x11, 0x03};
}
或者这么说吧,调用func1()两次,程序所占的内存增加多少?调用func2()呢?

解决方案 »

  1.   

    无任何差别??按MSDN的说法?new不是在堆上分配内存?第二个没有new,难道编译器自动给它加上个new?
      

  2.   

    为什么都说一样?如果是在C++里面这完全不同的。
    那么如果真一样的话,那就编译器自动第二个函数的cmd加上一个new啰?不然怎么能够一样???
      

  3.   

    还是那个问题,这两个cmd,都是指向在堆上分配的一块内存?还是前一个指向堆,后一个指向栈?
      

  4.   

    c#里引用类型都是堆上分配 值类型都是栈上分配 你可以反编译两个方法的IL就知道一样不一样了
      

  5.   

    一样的,IL代码一样,C#类设计中提到过!