Allocator class - dart:ffi library (original) (raw)

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

Annotations

Properties

hashCodeint

The hash code for this object.

no setterinherited

runtimeTypeType

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