Stewart Gordon:

> On 19/12/2011 12:12, bearophile wrote:

> > Try something like this (untested):
> >
> > alias float TF;
> > TF[] f = (cast(TF*)std.gc.malloc(x * TF.sizeof))[0 .. x];
> <snip>
> 
> I fail to see any real difference from the OP's code:
> 
> - Why the alias?

Because in that code I have used three times a type (TF), auto allows to remove 
only one of them. The alias is not the best solution (a better solution is to 
put that code into a templated function), but repeating the same generic type 
more than one time is usually a source of bugs.


> - std.gc.malloc returns the array with correct length according to my quick 
> test, so the 
> use of [0..x] is redundant

Really? Well, as I have said I have not tested that code.
Generally GC functions return a void*, so to create an array I think you need 
to slice it... What is the code of your quick test?


> - using TF.sizeof instead of 4 might fix things if on the user's platform 
> float isn't 4 
> bytes long.

In D I think float is always 4 bytes long.


>  Otherwise, while using .sizeof instead of a hard-coded number is better 
> practice, it isn't going to get rid of an AV.

I don't know what an AV is.

Bye,
bearophile

Reply via email to