MemoryManager class
Memory manager for FFI pointer lifecycle management
Provides safe allocation and deallocation of native memory, preventing memory leaks and ensuring proper cleanup.
Dart 3 Compatibility
This class has been updated for Dart 3 FFI compatibility. The allocate
method now requires an explicit size parameter because Dart 3's FFI
no longer supports generic type size inference with calloc<T>().
Usage:
final ptr = manager.allocate<dpiData>(sizeOf<dpiData>());
Logging
Optional logging can be configured to track memory operations:
MemoryManager.setLogger(
warning: (msg) => print('[WARNING] $msg'),
error: (msg) => print('[ERROR] $msg'),
);
Constructors
Properties
- allocatedCount → int
-
Get count of currently allocated pointers
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
- isDisposed → bool
-
Check if manager has been disposed
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
allocate<
T extends NativeType> (int sizeInBytes) → Pointer< T> - Allocate memory using calloc and track it for automatic cleanup.
-
allocateMalloc<
T extends NativeType> (int size) → Pointer< T> - Allocate memory using malloc and track it
-
dispose(
) → void - Free all allocated memory
-
free(
Pointer< NativeType> pointer) → void - Free a specific pointer and remove from tracking
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
logError(
String message) → void - Log an error message (static method for use outside MemoryManager instances)
-
logWarning(
String message) → void - Log a warning message (static method for use outside MemoryManager instances)
-
setLogger(
{void warning(String)?, void error(String)?}) → void - Configure logging callbacks for memory operations