creating void[] arrays

Steven Schveighoffer schveiguy at yahoo.com
Thu Oct 14 06:50:40 PDT 2010


One problem in D that has no clear answer and continuously rears it's head  
is the void[] type being used for buffering.

The main concern is that the runtime cautiously may remove the NO_SCAN bit  
 from a void[] array.  This means false pointers.

But can we approach this from a different angle?  What if you *couldn't*  
create void arrays?  Oh, you could cast arrays to void[] but you could  
never create them as void.  In addition, you couldn't append to void[],  
concatenate void[]'s or dup them.

What problems would this cause?  Essentially, if you wanted a void[] array  
that contains pointers, you'd have to change:

auto x = new void[...];

to

void[] x = new void*[...];

And if you wanted one that doesn't contain pointers, you could do:

void[] x = new ubyte[...];

Any other issues?  Who does frequent void[] appending or concatenation?

-Steve


More information about the Digitalmars-d mailing list