分配器抽象的

管理本地堆上的内存。

在分配内存时,建议直接以函数的方式调用此分配器(详情见AllocatorAlloc.call)。

此接口只提供用于分配字节数组的allocate方法和释放这种数组的free方法。实现者只需提供这两个方法。扩展的AllocatorAlloc.call方法是基于这些低级操作定义的。

一个将另一个分配器包装起来以计算分配次数的示例

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--;
  }
}
可用扩展
标注
  • @Since('2.12')

属性

hashCode int
此对象的哈希码。
无设置器继承的
runtimeType Type
表示对象运行时类型的表示。
无设置器继承的

方法

allocate<T extends NativeType>(int byteCount, {int? alignment}) Pointer<T>
在本地堆上分配byteCount字节的内存。
free(Pointer<NativeType> pointer) → void
释放本地堆上分配的内存。
noSuchMethod(Invocation invocation) → dynamic
当访问不存在的方法或属性时调用。
继承的
toString() String
此对象的字符串表示。
继承的

运算符

operator ==(Object other) bool
等于运算符。
继承的