description

# Allocator class abstract

Manages memory on the native heap.

When allocating memory, prefer calling this allocator directly as a function (see AllocatorAlloc.call for details).

This interface provides only the allocate method to allocate a block of bytes, and the free method to release such a block again. Implementations only need to provide those two methods. The AllocatorAlloc.call extension method is defined in terms of those lower-level operations.

An example of an allocator wrapping another to count the number of allocations:

    class CountingAllocator implements Allocator {
      final Allocator _wrappedAllocator;
      int _totalAllocations = 0;
      int _nonFreedAllocations = 0;

      CountingAllocator([Allocator? allocator])
          : _wrappedAllocator = allocator ?? calloc;

      int get totalAllocations => _totalAllocations;

      int get nonFreedAllocations => _nonFreedAllocations;

      @override
      Pointer<T> allocate<T extends NativeType>(int byteCount, {int? alignment}) {
        final result =
            _wrappedAllocator.allocate<T>(byteCount, alignment: alignment);
        _totalAllocations++;
        _nonFreedAllocations++;
        return result;
      }

      @override
      void free(Pointer<NativeType> pointer) {
        _wrappedAllocator.free(pointer);
        _nonFreedAllocations--;
      }
    }

Available extensions
  - AllocatorAlloc
Annotations
  - @Since.new('2.12')

## Properties

hashCode → int
  The hash code for this object.
  no setterinherited
runtimeType → Type
  A representation of the runtime type of the object.
  no setterinherited

## Methods

allocate<T extends NativeType>(int byteCount, {int? alignment}) → Pointer<T>
  Allocates `byteCount` bytes of memory on the native heap.
call<T extends SizedNativeType>([int count = 1]) → Pointer<T>

  Available on Allocator, provided by the AllocatorAlloc extension

  Allocates `sizeOf<T>() * count` bytes of memory using allocate.
free(Pointer<NativeType> pointer) → void
  Releases memory allocated on the native heap.
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a nonexistent method or property is accessed.
  inherited
toString() → String
  A string representation of this object.
  inherited

## Operators

operator ==(Object other) → bool
  The equality operator.
  inherited