Spec-Zone.ru › Dart 2

dart:ffi

Класс 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--;
  }
}
Доступные расширения
  • AllocatorAlloc
Аннотации
  • @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
унаследовано
Оператор равенства.

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-ffi/Allocator-class.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API