www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Set array size to simplify mem mgmt

reply Ald <aldarri_s yahoo.com> writes:
Hello.

I have the following code:

char[] unitStack = new char[256];
unitStack.length = 0;

Does it make sense from viewpoint of simplifying memory management?  If I
enlarge the size, the array won't be reallocated?
Jul 05 2007
next sibling parent Oskar Linde <oskar.lindeREM OVEgmail.com> writes:
Ald skrev:
 Hello.
 
 I have the following code:
 
 char[] unitStack = new char[256];
 unitStack.length = 0;
 
 Does it make sense from viewpoint of simplifying memory management?  If I
enlarge the size, the array won't be reallocated?
That is equivalent to reserving 256 chars. Enlarging the unitStack will not cause reallocation for at least the first 256 entries. -- Oskar
Jul 05 2007
prev sibling parent reply Ald <aldarri_s yahoo.com> writes:
Oskar Linde Wrote:

 Ald skrev:
 Hello.
 
 I have the following code:
 
 char[] unitStack = new char[256];
 unitStack.length = 0;
 
 Does it make sense from viewpoint of simplifying memory management?  If I
enlarge the size, the array won't be reallocated?
That is equivalent to reserving 256 chars. Enlarging the unitStack will not cause reallocation for at least the first 256 entries. -- Oskar
What sort of guarantee there is that the memory manager will not give the 127th through 255th chars to somebody else?
Jul 05 2007
parent Oskar Linde <oskar.lindeREM OVEgmail.com> writes:
Ald skrev:
 Oskar Linde Wrote:
 
 Ald skrev:
 Hello.

 I have the following code:

 char[] unitStack = new char[256];
 unitStack.length = 0;

 Does it make sense from viewpoint of simplifying memory management?  If I
enlarge the size, the array won't be reallocated?
That is equivalent to reserving 256 chars. Enlarging the unitStack will not cause reallocation for at least the first 256 entries. -- Oskar
What sort of guarantee there is that the memory manager will not give the 127th through 255th chars to somebody else?
The 256 bytes form a continuous chunk. As long as any reference (pointer) to any element within that chunk exists, the GC will not reclaim any part. unitStack.length = 0; will not change unitStack.ptr. -- Oskar
Jul 05 2007