Allocator抽象

管理本地堆上的内存。

在分配内存时,建议直接调用此分配器作为函数(有关详细信息,请参阅 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
等于运算符。
继承