On Tuesday, 29 October 2013 at 11:26:45 UTC, Froglegs wrote:

   BigInt n = 100;
   n += 10;
   ++n;

... and both the 2nd and 3rd lines will result in a reallocation even though there is no need for it, because only n is referencing the memory it wraps.


Does BigInt not have overloaded operators for adding normal integers? Is it converting 10 to a BigInt prior to adding it to n?

Yes, it has overloaded operators, but that's not relevant. The issue is that
initially n points to an block of memory, containing [100].

Then, if you use COW, n+= 10 isn't in-place. It has to create a new array, containing [110].
Then ++n creates a third array. [111].

Reply via email to