December 21, 2001 how dynamic arrays work? | ||||
---|---|---|---|---|
| ||||
I wonder how dynamic arrays are implemented in D. Do they reallocate themselves each time new element is added? Or do they reserve memory in larger blocks, so that several (how many?) consequent appends would not require reallocation, like std::vector does? I understand that it's implementation-defined, still it would be useful to know at least how your compiler works; I just want to decide if I can use dynamic arrays to generate data dynamically in the memory as is fast enough, or I have to make a wrapper class that'd allocate memory in larger blokes. |
December 21, 2001 Re: how dynamic arrays work? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Pavel Minayev |
Pavel Minayev wrote:
>
> I wonder how dynamic arrays are implemented in D. Do
> they reallocate themselves each time new element is
> added? Or do they reserve memory in larger blocks,
> so that several (how many?) consequent appends would
> not require reallocation, like std::vector does?
>
> I understand that it's implementation-defined, still
> it would be useful to know at least how your compiler
> works; I just want to decide if I can use dynamic
> arrays to generate data dynamically in the memory as
> is fast enough, or I have to make a wrapper class
> that'd allocate memory in larger blokes.
I think that Walter indicated a while back that darrays
generally alloc in power-of-two steps up to a given
size and then linearly after that, so go ahead and build
your darrays one element at a time and let the compiler
take care of you.
-RB
|
Copyright © 1999-2021 by the D Language Foundation