[八卦] 多维数组是怎么样初始化的?

player7 2007-05-14
我的程序用到一个2维数组,

用:  Cell[100][100]  cells;   //可以使用,但是体积增大了300多K

用: 
Cell[][]    cells;
cells = new Cell[100][100] ; //错误

最后用:
Cell[][]    cells;
cells.length = 100 ;
for(int i=0;i<cells.length; i++)
   cells[i]= new Cell[100];
qiezi 2007-05-14
player7 写道
我的程序用到一个2维数组,

用:  Cell[100][100]  cells;   //可以使用,但是体积增大了300多K

怎么我测试没有增大呢。。

它是在栈上分配的,最好避免分配太多,可能导致栈溢出。

player7 写道

用: 
Cell[][]    cells;
cells = new Cell[100][100] ; //错误

最后用:
Cell[][]    cells;
cells.length = 100 ;
for(int i=0;i<cells.length; i++)
   cells[i]= new Cell[100];

用后面这种就行了,没必要用new,直接改长度:
Cell[][]    cells;
cells.length = 100 ; 
foreach(ref c; cells)
    c.length = 100;
player7 2007-05-14
我用的DFL试的,像下面这种体积更大,从300K 涨到 3.4M
class MyForm: dfl.form.Form 
{ 
...
	 int[900][900] uts;
...
	 this() 
	 { 
		 initializeMyForm(); 
		 for(int i=0;i<900;i++)
		  for(int j=0;j<900;j++)
		     uts[j][i]=100;
qiezi 2007-05-14
。。原来是类的成员,我是在函数里测试的。它为了提高效率,会把类的init保存到静态数据区,初始化时先用这块数据初始化内存,再调用构造函数,现在增大的是静态数据。

这刚好形成两种方案,一种是使用运行期时间,国一种是空间换时间,当然这个时间本来就很少,占用空间就不合算了,自己取舍吧。
yayv 2007-05-15
http://www.pyapp.com/D-Array-2/

Global site tag (gtag.js) - Google Analytics