On the richness of C++

Kevin Bealer kevinbealer at gmail.com
Thu Apr 10 22:19:34 PDT 2008


Sean Kelly Wrote:

> == Quote from Kevin Bealer (kevinbealer at gmail.com)'s article
> > If you want to do really specific things with memory, C++ lets you do this, but
> > in D classes can only be handled by their object references.  You can't do a
> > "placement new" or anything like it with D classes.  In C++ you could build
> > classes that automatically allocate themself in a shared memory segment, but
> > in D, probably not.  Note that in practice, this is hard to do right and I think is
> > rarely used for much.
> 
> I'd personally like for "placement new" to be supported by the language.  I've
> considered adding a new(void*) method to Object for this purpose in Tango,
> but haven't experimented enough to find out if this would cause any problems.
...

I can think of these reasons off hand why (C++) folks do placement new.

1. Allocate lots of class objects at once to reduce allocations.

2. Allocate-on-stack for objects to avoid allocation altogether.

3. Group classes together for memory locality.

4. Tricks like surrounding objects with DEADBEEF for memory 
corruption detection, or adding next or left/right pointers to objects.

Out of curiosity, what motivates your desire for placement new?

Kevin




More information about the Digitalmars-d mailing list