Why are void contents marked as having pointers?
thecybershadow at gmail.com
Sun May 31 13:09:54 PDT 2009
On Sun, 31 May 2009 22:41:47 +0300, Walter Bright <newshound1 at digitalmars.com> wrote:
> Vladimir Panteleev wrote:
>> I don't know why it was decided to mark the contents of void as
>> "might have pointers". It makes no sense! Consider:
>> 3) It's very rare in practice that the only pointer to your
>> object (which you still plan to access later) to be stored in a
>> void-allocated array!
> Rare or common, it still would be a nasty bug lurking to catch someone.
> The default behavior in D should be to be correct code. Doing
> potentially unsafe things to improve performance should require extra
> effort - in this case it would be either using the gc function to mark
> the memory as not containing pointers, or storing them as ubyte
This isn't about performance, this is about having one thousand casts all over my code. It becomes a burden to cast everything to ubyte when working with abstract binary data. For example, when building a MIME multipart message with binary fields, every line needs to have a cast in it - when we could have just used the ~= operator to append to a void.
Alternative solutions would be to have a second type (either new or one of the existing, e.g. ubyte) act as void (any array type casts to it implicitly) but not be scanned by the GC, but I doubt this is something you'll consider
Vladimir mailto:thecybershadow at gmail.com
More information about the Digitalmars-d