Thread overview
Manual Memory Management Example for dlang.org Docs (Code Review)
Feb 26, 2014
Mike
Feb 26, 2014
Mike
Feb 26, 2014
Dicebot
Feb 27, 2014
Mike
Feb 27, 2014
Sean Kelly
February 26, 2014
As I study D, I am running across quite a few unmaintained examples in dlang.org's documentation.  Rather than leaving them for the next guy to step in, I'm (one-by-one) submitting pull request to fix them.

I need an good manual memory management example, but the one at http://dlang.org/memory.html#newdelete uses the deprecated allocators.

Daniel Gibson posted an example here (http://forum.dlang.org/post/ip76fa$2o7k$3@digitalmars.com) back in 2011.

I've modified that example and posted a new one here (http://dpaste.dzfl.pl/f4b09b9e6c46) using destroy.

I'm quite new to D, so I'm asking the community to please review this example so I can submit a pull and update the docs.

Thanks,
Mike
February 26, 2014
On Wednesday, 26 February 2014 at 02:23:47 UTC, Mike wrote:
>
> I've modified that example and posted a new one here (http://dpaste.dzfl.pl/f4b09b9e6c46) using destroy.
>

I modified this based on Adam D. Ruppe's example here( http://arsdnet.net/dcode/malloc.d).

Please review this (http://dpaste.dzfl.pl/2377217c7870) instead.
February 26, 2014
On Wednesday, 26 February 2014 at 04:43:30 UTC, Mike wrote:
> Please review this (http://dpaste.dzfl.pl/2377217c7870) instead.

> throw new Exception("Out of memory");

I don't think it is a good thing to do. Of course GC is likely to have some memory left in hs internal pools but in general once you hit out-of-memory state last thing you want is not allocate even more.

> // Deallocate test
> heapDeallocate(test);

More idiomatic D is to put `scope(exit) heapDeallocate(test);` immediately after allocation line.
February 27, 2014
On Wednesday, 26 February 2014 at 15:00:13 UTC, Dicebot wrote:
> On Wednesday, 26 February 2014 at 04:43:30 UTC, Mike wrote:
>> Please review this (http://dpaste.dzfl.pl/2377217c7870) instead.
>
>> throw new Exception("Out of memory");
>
> I don't think it is a good thing to do. Of course GC is likely to have some memory left in hs internal pools but in general once you hit out-of-memory state last thing you want is not allocate even more.
>
>> // Deallocate test
>> heapDeallocate(test);
>
> More idiomatic D is to put `scope(exit) heapDeallocate(test);` immediately after allocation line.

Thanks,

I've made changes and I guess this is the one I'll use for the pull.
(http://dpaste.dzfl.pl/31367860c005)
February 27, 2014
On Wednesday, 26 February 2014 at 15:00:13 UTC, Dicebot wrote:
> On Wednesday, 26 February 2014 at 04:43:30 UTC, Mike wrote:
>> Please review this (http://dpaste.dzfl.pl/2377217c7870) instead.
>
>> throw new Exception("Out of memory");
>
> I don't think it is a good thing to do. Of course GC is likely to have some memory left in hs internal pools but in general once you hit out-of-memory state last thing you want is not allocate even more.

For certain standard errors, the proper approach is probably to call the appropriate handler in core.exception.