Manually freeing up memory
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Wed Nov 7 08:22:30 PST 2012
On 11/07/2012 03:17 PM, bearophile wrote:
> One solution is to allocate the original array on the C heap. Another solution
> is to allocate it normally from the GC heap and then use GC.free().
Well, what I've got is something like this:
auto raw = rawInput(); /* loads data and outputs a struct containing
the array of data */
auto data = rawToData(raw); // converts the raw input to data structure
GC.free(raw.links.ptr); // _should_ free up the allocated memory?
... but despite the GC.free(), memory usage stays at peak level for the rest of
the runtime of the function.
I tried preceding the free() with a destroy(raw) or destroy(raw.links) also to
no avail.
> Maybe a third option is to use a memory-mapped file for the first array.
That's an interesting thought, which I'll look into. Another thought was to
dump the data into an SQL DB and read/sample from there as necessary, but IIRC
the SQL support available for D is somewhat limited right now ... ?
More information about the Digitalmars-d-learn
mailing list