D array expansion and non-deterministic re-allocation

Leandro Lucarella llucax at gmail.com
Mon Nov 23 08:10:48 PST 2009


Steven Schveighoffer, el 23 de noviembre a las 07:34 me escribiste:
> >Notice that you are using particular implementation detail (MRU
> >cache) to explain the semantics of D arrays. There is a very
> >important distinction between language specification and compiler
> >implementation. Andrei already had to go pretty deep into
> >implementation to describe arrays and slices: You can't define D
> >arrays without talking about shared buffers and memory allocation.
> >I don't think including the description of the MRU cache in the
> >language specification is the right solution. But I'm afraid an
> >abstract definition of "stomping" might turn out to be quite
> >non-trivial.
> 
> I haven't yet read all the other posts, so someone else may already
> have pointed this out but...
> 
> Having an MRU cache makes it so you *don't* have to explain its
> semantics (or stomping).  Currently there is a paragraph in the spec
> (complete with example) talking about how stomping can occur, so you
> can just remove that part.  There is no need to talk about the MRU
> cache when talking about arrays, that's an implementation detail.  I
> was pointing it out because you are already used to the current bad
> implementation :)  I wouldn't even bring up the MRU cache in the
> book or the spec.  You just say that you can append to an array and
> it may make a copy of the data if necessary.  It's just like
> realloc, except safer.

The thing is, with realloc() is less likely that you forget that the data
can be copied because it returns the new pointer (that can be the same as
the original pointer). And even in this case, I saw a lot of bugs related
to realloc() misuse (and I made a couple myself).

With slices is much worse.

-- 
Leandro Lucarella (AKA luca)                     http://llucax.com.ar/
----------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------
Si le decía "Vamos al cine, rica"
Me decía "Veamos una de Kusturica"
Si le decía "Vamos a oler las flores"
Me hablaba de Virginia Wolf y sus amores
Me hizo mucho mal la cumbiera intelectual



More information about the Digitalmars-d mailing list