may gc free malloced memory?

monarch_dodra monarchdodra at gmail.com
Wed Sep 11 22:59:29 PDT 2013


On Thursday, 12 September 2013 at 05:36:31 UTC, Alexandr 
Druzhinin wrote:
> Some C function malloc-ed memory. This memory should be freeed 
> much later. I don't want to manually call C function to free 
> this memory in some point later, so may I in some way ask gc to 
> free this memory using something like addRoot(for instance) or 
> else or the true way is to copy malloc-ed memory to 
> gc-allocated memory and free malloc-ed memory at once? Like:
>
> ubyte data* = cfunction_allocates_memory();
> auto gcmemory = data[0..length(data)];
> cfunction_frees_memory(data);
> // work with gcmemory only
>
> or
>
> ubyte data* = cfunction_allocates_memory();
> GC.someUnknownToMeFunction(data); // now gc will control this 
> memory

No.

Only free can be used with malloc. The memory comes from distinct 
pools.

Another option could be to use "GC.malloc", and memcpy your old 
mmory into your new memory, free the old memory, and use your new 
block. GC.malloc, as the name suggests, is a malloc, but done by 
the GC.


More information about the Digitalmars-d-learn mailing list