void[] vs byte[]

Steven Schveighoffer schveiguy at yahoo.com
Mon Aug 30 06:05:20 PDT 2010


On Sat, 28 Aug 2010 16:13:28 -0400, BCS <none at anon.com> wrote:

> Hello Yao G.,
>
>> I'm here with another n00b question:
>>  When dealing with big buffers (or files), which is better to use as
>> storage? void[] or byte[]?
>
> If the data may contain pointers into the heap, use void[] if it will  
> not use byte[]. byte[] is "raw" data, void[] is anything at all.

One other point to make -- any type of array casts to void[].  So void[]  
is kind of like a "catch all" array type.  It's typically the correct  
choice when accepting data that you are going to blindly copy somewhere.   
For example a function to write data to a file.

For reading data/storing data, the best type might be ubyte[] (don't use  
byte[], it's signed).  void[] can also be used, but you may run into  
issues with "may contain pointers" problems.

I personally think the idea of allocating a void[] should set the  
"contains pointers" bit seems incorrect.  Usually when a void[] contains  
pointers, it was not allocated as a void[].

-Steve


More information about the Digitalmars-d-learn mailing list