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.
signature.asc
Description: PGP signature