On Sat, 14 Feb 2015 00:57:33 +0000, weaselcat wrote:

> On Friday, 13 February 2015 at 22:55:27 UTC, anonymous wrote:
>> On Thursday, 12 February 2015 at 23:52:41 UTC, Foo wrote:
>>> This is something I've done recently.
>>> Would be glad if my code will help you: https://github.com/Dgame/m3
>>> Especially the m3.d module could be useful for you.
>>
>> /* Class and Struct */
>>
>> emplace: You can't assume zero-initialization for structs. destruct: Is
>> not memory-safe, and must not be marked @trusted.
>>
>> /* Array */
>>
>> make: You can't assume zero-initialization. T.sizeof is not the size of
>> an element.
>> reserve: Not safe (you're freeing the old memory), must not be
>> @trusted.
>> append: T.sizeof is not the size of an element. You're multiplying
>> twice with T.sizeof; in `append`, and also in `reserve`.
>> destruct: Not safe, must not be @trusted.
> 
> Low level memory management isn't easy.
> Bugs like these wouldn't exist if D had decent smart pointer
> implementations in its standard library. You seem knowledgeable enough,
> care to lend a hand? ; )

how "smart pointers" can help here? they don't magically hiding all the 
low-level mechanics.

Attachment: signature.asc
Description: PGP signature

Reply via email to