Running out of memory ctfe 16GB

H. S. Teoh via Digitalmars-d digitalmars-d at puremagic.com
Thu Apr 6 15:23:42 PDT 2017


On Fri, Apr 07, 2017 at 01:16:20AM +0300, ketmar via Digitalmars-d wrote:
> Dmitry Olshansky wrote:
> 
> > 2) Instead of building out out big string try building each
> > interface separately. If I'm not mistaken current CTFE will actually
> > allocate a whole new array on each append and copy things.  Since it
> > never deallocates building up a huge string by bits and pieces is a
> > bad idea as it will leak the entire thing on each append.
> 
> or use `char[]` buffer instead, manually increasing it's size by some
> step.  assigning to such array won't do any copies, so growing the
> array by 32kb (or even several mb) steps will reduce memory footprint
> for string builders considerably.

Are you sure?  AFAIK, the current CTFE engine will copy values every
time they are assigned, regardless of whether they are technically
"mutable" or not.


T

-- 
What's a "hot crossed bun"? An angry rabbit.


More information about the Digitalmars-d mailing list