Swift deprecate i++ and c-style for loop

Jonathan M Davis via Digitalmars-d digitalmars-d at puremagic.com
Wed Feb 24 13:17:12 PST 2016


On Wednesday, 24 February 2016 at 21:03:12 UTC, rsw0x wrote:
> On Wednesday, 24 February 2016 at 20:47:50 UTC, Ola Fosheim 
> Grøstad wrote:
>> On Wednesday, 24 February 2016 at 18:06:19 UTC, Steven 
>> Schveighoffer wrote:
>>> I'm quite glad D stuck with the same type for arrays and 
>>> array slices.
>>
>> And how will you get around this when not having a GC?
>
> Could you expand upon what you mean here? I have an entire D 
> project not using the GC and make use of slices everywhere.

Slicing non-GC memory so that you get dynamic arrays is fine, but 
then you have to have somewhere else managing that memory, 
whereas you don't really have to worry about it when using the 
GC, and you have to avoid array operations which would use the GC 
(appending or concatenation). So, having code that doesn't use 
the GC but does use dynamic array treat dynamic arrays the same 
way that a program that uses the GC would treat them can become 
problematic - particularly since it's trivial to have dynamic 
arrays floating around referring to some chunk of malloced memory 
without realizing that they're still around when you free that 
malloced memory.

So, yes. D's dynamic arrays work without the GC (barring the few 
operations that require the GC), but they're designed with the GC 
in mind and don't manage their own memory, meaning that you 
almost certainly need to treat them a bit differently when you 
don't have the GC (certainly, you have to be a lot more careful 
about what code you let hold onto dynamic arrays in order to 
avoid having them exist after the memory they refer to has been 
freed).

But doing stuff like feeding dynamic arrays which are slices of 
malloced memory to a bunch of functions that just process them 
and give you a result without holding onto them or attempting to 
append to them should work just fine. It's the stuff that might 
hold onto them where things get hairy.

- Jonathan M Davis


More information about the Digitalmars-d mailing list