weird behave of Array?
Adam D. Ruppe
destructionator at gmail.com
Sun Jul 28 17:45:16 UTC 2019
On Sunday, 28 July 2019 at 17:21:25 UTC, dmm wrote:
> test(str);
The array is passed by value here, so changes to its ptr and
length will not be seen outside the function.
However, what goes *through* the pointer - which includes the
contents and the capacity - will be seen. The runtime tries to
minimize weird stuff by opting for making the capacity 0 if the
array structure has been modified in a function (so of the length
is changed, if it is appended, etc.), so then appends will not
stomp over contents from two different locations. Since the
memory pointed to is a shared resource it is conservative in not
reusing it.
You can read a bit more about this here
https://dlang.org/articles/d-array-article.html#append-on (really
the whole article might be good background).
More information about the Digitalmars-d-learn
mailing list