View source code
Display the source code in core/memory.d from which this page was generated on
github.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Page wiki
View or edit the community-maintained wiki page associated with this page.
Function core.memory.GC.addRange
Adds to the list of memory ranges to be scanned for
pointers during a collection. If p[0 .. sz]p is null, no operation is performed.
Note that is treated as an opaque range of memory assumed
to be suitably managed by the caller. In particular, if p[0 .. sz]p points into a
GC-managed memory block, addRange does not mark this block as live.
Prototype
static void addRange( const(void*) p, ulong sz, const(TypeInfo) ti = null ) nothrow @nogc;
Parameters
| Name | Description |
|---|---|
| p | A pointer to a valid memory address or to null. |
| sz | The size in bytes of the block to add. If sz is zero then the
no operation will occur. If p is null then sz must be zero. |
| ti | TypeInfo to describe the memory. The GC might use this information
to improve scanning for pointers or to call finalizers |
Example
// Allocate a piece of memory on the C heap. enum size = 1_000; auto rawMemory = core.stdc.stdlib.malloc(size); // Add it as a GC range. GC.addRange(rawMemory, size); // Now, pointers to GC-managed memory stored in // rawMemory will be recognized on collection.
Authors
Sean Kelly, Alex Rønne Petersen