比如
var
a:array [1..10000] of array [1..10000] of int64;
声明后居然不占用内存,而改用动态内存,就会占用。
另外声明一个最大的静态数组该如何写。是不是这样
var
a:array [1..Maxint div 2-1]

解决方案 »

  1.   

    在var中声明的变量是在栈中分配的,这由编译器对其管理而不是没有分配内存。
      

  2.   

    不信,大家可以在程序中声明一个比较大的静态动态数组,然后打开windows任务管理器察看内存变化,运行后没有任何改变。而声明为动态数组,执行setlength后,内存就会减少。我估计静态变量是赋了值后才占用内存。
      

  3.   

    肯定占用内存,你可以这样测试:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      a:array [1..10000] of array [1..10000] of int64;
    beginend;// 
    1, 打开任务管理器
    2,运行你的程序(注意看你的程序占了多少内存)
    3,按下Button1,再看任务管理器
    4,你发现内存涨了!!!
      

  4.   

    To: qiume(杜克) 我真不知你测试过没有。
    我就是这样测试的,内存一点也没变,不信你试。
      

  5.   

    我已测试过多遍,静态数组声明不占用内存,赋值后才占用,更令人惊讶的是即使是局部声明,静态数组一旦占用内存就不会释放,直到程序退出后才释放。而动态数组可以通过置nil可以释放内存。