Класс 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 унаследовано - Оператор равенства.
© 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