What is the Correct way to Malloc in @nogc section?
weaselcat via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Feb 13 23:59:51 PST 2015
On Saturday, 14 February 2015 at 06:38:19 UTC, ketmar wrote:
> 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.
The file he was referring to was a smart pointer implementation.
More information about the Digitalmars-d-learn
mailing list