A bug in my code
    Sergey Gromov 
    snake.scaly at gmail.com
       
    Mon Sep  8 02:44:14 PDT 2008
    
    
  
Bill Baxter <wbaxter at gmail.com> wrote:
> On Mon, Sep 8, 2008 at 8:33 AM, bearophile <bearophileHUGS at lycos.com> wrote:
> > Jarrett Billingsley:
> >> There's no way to do it with any heap-allocated value, which does seem
> >> a bit like a hole to me.
> >
> > I think there's both a syntax problem (what syntax to use?), and the fact that when possible D wants to avoid programming mistakes, so it wants to initialize memory to a clean state (this is even more important for the GC).
> 
> > But maybe this isn't important enough.
> 
> Yeh, maybe not this one thing.  But enough grains of sand like this
> and you have a sizable obstacle.  And D has a fair number of such
> grains.
A non-initialized array must never be scanned for pointers, even if the 
underlying type contains them.  This is a very dangerous feature which 
must not be available in SafeD.  You can always use
  T[] allocArrayNoInit(T)(size_t count) {
    void[] mem = std.gc.malloc(count * T.sizeof);
    std.gc.hasNoPointers(mem.ptr);
    return cast(T[])mem;
  }
    
    
More information about the Digitalmars-d-learn
mailing list