声明一个字节数组,但是没有赋值任何东西。到底占不占用内存空间???byte[] buffer = new byte[1024;

解决方案 »

  1.   


    那我要这样,启不把内存占完了?可是启动并没有异常!只占了 12996K 。是操作系统自动分配吗?byte[] bytes = new byte[999999999];
      

  2.   

    那我要这样,启不把内存占完了?可是启动并没有异常!只占了 12996K 。是操作系统自动分配吗?byte[] bytes = new byte[999999999];
    ==============================================
    个人认为.net并不会全部用内存条中的空间,在内存条中申请一部份空间,在硬盘上虚拟剩余部分空间,根据特定的内存分配算法,完成内存条空间和硬盘虚拟空间的互换。这是我个人的设计方案,不知道.net实际是如何做的。
      

  3.   

    有 new 就分配了内存空间,没有就不占
      

  4.   

    如果你声明一个变量,一直并未赋值,VS2005会提醒的。LZ的这种情况(声明、赋值,但未使用),一些编译器也会优化掉吧。
      

  5.   

    那我要这样,启不把内存占完了?可是启动并没有异常!只占了 12996K 。是操作系统自动分配吗?byte[] bytes = new byte[999999999];-----------------------------------------
    你分配后有没有用过这个bytes对象,如果只是new了而没用过,则在会在new后马上就被垃圾回收器回收掉,垃圾回收器的回收原则之一是柿子挑软的捏-0-
      

  6.   

    在你new的时候是占用内存空间,但是不一定是物理内存。如果你没有使用.net的垃圾处理会自动处理掉他
      

  7.   

    这样肯定会影响速度的
    可以使用ArrayList类
      

  8.   

    只要你有new分成了对象就占用内存
      

  9.   

    因为字节数组是值引用类型所以声明的时候会在堆栈上分配相应大小的空间,如果是引用类型没有New只是声明的话只会在堆栈上分配4个字节的指针反之需要在堆栈上分配4个字节的指针并在堆的顶部分配实例所需的内存并将堆栈的指针指向堆中的地址