d malloc

via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Aug 9 02:08:14 PDT 2014


On Friday, 8 August 2014 at 18:51:49 UTC, ketmar wrote:
>> Why are void pointers better than ulong, if I may ask
> there is at least one reason: GC. yes, it is conservative, but 
> there's no reason to scan ulong[] for any pointers, so you may 
> lost your objects if there is no other references to 'em.

And `ulong` is always 64 bits large, while pointer size depends 
on the system architecture (32 bits vs 64 bits). If you really, 
really must use an integral type instead of a pointer, use 
`size_t`, which is defined to have the same size as a pointer.

But as ketmar said, the GC may not see recognize it then. `void*` 
also has the advantage that you don't need to case if you assign 
to it, because pointers convert to `void*` implicitly. In your 
case, however, you likely are better off if you use `S*`, then 
you don't need to do any conversions at all.


More information about the Digitalmars-d-learn mailing list