Класс 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 только для чтения, унаследованное
- Представление runtime типа объекта.
Методы
- 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.18.5/dart-ffi/Allocator-class.html