Running out of memory

Jonathan M Davis jmdavisProg at gmx.com
Thu Dec 27 20:41:10 PST 2012


On Thursday, December 27, 2012 16:00:58 FG wrote:
> On 2012-12-27 15:31, bearophile wrote:
> > delete is deprecated in D. There is destroy(), and a replacement for
> > delete in the memory/GC module.
> 
> destroy() had no effect on program's behavior, even the docs state that "it
> does not initiate a GC cycle or free any GC memory".
> So I hope delete will still remain an option.
> Very useful for freeing such large chunks like in this example.
> 
> What do you mean as the delete replacement?

The idea is that if you want to be manually freeing memory, you shouldn't be 
using GC memory in the first place. It's unsafe to be freeing it. Let the GC do 
that. If you want to manually manage memory, then manually manage it with 
malloc and free. If you really need to, then core.memory has the functions for 
managing the GC's memory, but you really shouldn't be doing that normally.

Manual memory management should become easier once custom allocators are 
sorted out, since right now, if you want objects, you need to use emplace to 
turn the malloced memory into a proper object, and it's definitely more of a 
pain than using new with the GC. But it's still not a good idea in general to 
try and do manual memory management on GC memory.

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list