Help with multi-dimentional array

Era Scarecrow rtcvb32 at yahoo.com
Wed Jul 9 15:26:10 PDT 2008


Koroskin Denis Wrote:
> No, you create *an array*, not objects of concrete type. Thus, no  
> constructor is called and an array contains a butch of uninitialized class  
> references. And since no ctor is called, you can't pass any ctor  
> parameters right there.
> 
> So you still need a loop to initialize the array properly.

 I see. so after i do the = new xyz[][](left,right), and i wanted to fill in x,y,z i'd have to

// this(x,y,z){} //still this constructor

z=100;
for(int x=0; x<left; x++)
    for (int y=0; y<right; y++)
        xyz[x][y] = new xyz(x,y,z)

 Well, even if we have to do this, creating the basic array is a lot simpler.

 Now let me doublecheck once more. If i DID this.

 abc = new xyz[][](4,4);    //Non-stack and GC handles it, or i can malloc
 abcd [4][4]xyz;    //(Stack / non-Stack) static allocation

 I'll assume that
 1) abcd is an array of 4 pointers that have 4 pointers each
 2) It is not created by the GC, but instead resides on the Stack? (Please confirm)

 If this doesn't make it on the stack, i'll need to know a way that i can, in case i need to make a small array that i don't want to burden the garbage collector. (or worse yet, if i make a module that goes into a kernel that doesn't support GC, i don't want to worry about freeing the memory). Although if i recall it's probably an import. (std.mem.alloca?)

 Era


More information about the Digitalmars-d-learn mailing list