On Tue, 13 Apr 2010 08:56:03 -0400, Steven Schveighoffer
<schvei...@yahoo.com> wrote:
If you don't use reserve, here is what happens during the loop:
1st append: The smallest block possible to hold 1 double is found and
allocated
2nd append: If the block holding the first double can hold 2, the
"allocated" size of the block is increased to 2 doubles. Otherwise, the
smallest block possible to hold 2 doubles is found and allocated.
...
Assuming you may ask questions about this, it's not an exact description
of what happens. The append code and GC are smarter about it than this, I
just wanted to explain it in an easy-to-understand way :) The real code
uses algorithms to determine optimal grow sizes and can extend into
consecutive blocks if possible.
-Steve