Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
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 a local clone.
- struct GCAllocator;
- D's built-in garbage-collected allocator.Examples:
auto buffer = GCAllocator.instance.allocate(1024 * 1024 * 4); // deallocate upon scope's end (alternatively: leave it to collection) scope(exit) GCAllocator.instance.deallocate(buffer); //...
- enum uint alignment;
- The alignment is a static constant equal to platformAlignment, which ensures proper alignment for any D data type.
- shared pure nothrow @trusted void allocate(size_t bytes);
shared @system bool expand(ref void b, size_t delta);
shared pure nothrow @system bool reallocate(ref void b, size_t newSize);
shared pure nothrow void resolveInternalPointer(void* p);
shared pure nothrow @system bool deallocate(void b);
shared size_t goodAllocSize(size_t n);
- Standard allocator methods per the semantics defined above. The deallocate and reallocate methods are @system because they may move memory around, leaving dangling pointers in user code.
- static shared GCAllocator instance;
- Returns the global instance of this allocator type. The garbage collected allocator is thread-safe, therefore all of its methods and instance itself are shared.