D-

Zachary Lund admin at computerquip.com
Sat Feb 11 16:40:50 PST 2012


On Sunday, 12 February 2012 at 00:29:35 UTC, Jonathan M Davis 
wrote:
> On Saturday, February 11, 2012 18:01:05 Nick Sabalausky wrote:
>> But not all slices are slices of dynamic arrays.
>
> But all slices are still dynamic arrays, even if they refer to 
> a static array. They just have a capacity of 0, so any 
> appending will result in them being reallocated. And slicing 
> static arrays is one of those things that you generally have to 
> be careful about precisely because they aren't managed by the 
> GC and can go out of scope before their slices do.
>
>> Yea, manual memory management is hard and you have to be 
>> careful. That's
>> true slices or not.
>
> Yes, but in this case, you're dealing with a language feature 
> which is _designed_ to be managed by the GC. It's not designed 
> for manual memory management at all. It's a completely 
> different situation when you're dealing with user-defined types.
>
>> Arrays knowing their own length *is* a notable improvement 
>> over C.
>
> Indeed, but that's pretty much the only improvement that D 
> makes to arrays which is safe to use without a GC without being 
> _very_, _very_ careful.
>
> - Jonathan M Davis

Btw, I'm not very fluent in the inner workings of a garbage 
collector implementation but how does one go about concatenating 
to an array in a garbage collector as compared to manual memory 
management? I believe array concatenation can be done in 
std::vector with the insert() function just fine. Isn't it as 
simple as determining both array sizes and allocating enough 
memory for both arrays? I could be oversimplifying things...


More information about the Digitalmars-d mailing list