Struct RewindableAllocator
An allocator that is fast like a linear allocator, is threadsafe, and automatically invalidates all allocations made from it, when "rewound" by the user.
Implements
Namespace: Unity.Collections
Assembly: Unity.Collections.dll
Syntax
[BurstCompile]
public struct RewindableAllocator : AllocatorManager.IAllocator
Properties
BlocksAllocated
Retrieves the number of memory blocks that the allocator has requested from the system.
Declaration
public int BlocksAllocated { get; }
Property Value
Type | Description |
---|---|
int |
EnableBlockFree
Property to get and set enable block free flag, a flag indicating whether the allocator should enable individual block to be freed.
Declaration
public bool EnableBlockFree { get; set; }
Property Value
Type | Description |
---|---|
bool |
Function
All allocators must implement this property, in order to be installed in the custom allocator table.
Declaration
[ExcludeFromBurstCompatTesting("Uses managed delegate")]
public AllocatorManager.TryFunction Function { get; }
Property Value
Type | Description |
---|---|
AllocatorManager.TryFunction |
Handle
Retrieve the AllocatorHandle associated with this allocator. The handle is used as an index into a global table, for times when a reference to the allocator object isn't available.
Declaration
public AllocatorManager.AllocatorHandle Handle { get; set; }
Property Value
Type | Description |
---|---|
AllocatorManager.AllocatorHandle | The AllocatorHandle retrieved. |
InitialSizeInBytes
Retrieves the size of the initial memory block, as requested in the Initialize function.
Declaration
public int InitialSizeInBytes { get; }
Property Value
Type | Description |
---|---|
int |
IsAutoDispose
Check whether this allocator will automatically dispose allocations.
Declaration
public bool IsAutoDispose { get; }
Property Value
Type | Description |
---|---|
bool | Always true |
Remarks
Allocations made by Rewindable allocator are automatically disposed.
IsCustomAllocator
Check whether this AllocatorHandle is a custom allocator.
Declaration
public bool IsCustomAllocator { get; }
Property Value
Type | Description |
---|---|
bool | True if this AllocatorHandle is a custom allocator. |
ToAllocator
Retrieve the Allocator associated with this allocator.
Declaration
public Allocator ToAllocator { get; }
Property Value
Type | Description |
---|---|
Allocator | The Allocator retrieved. |
Methods
AllocateNativeArray<T>(int)
Allocate a NativeArray of type T from memory that is guaranteed to remain valid until the end of the next Update of this World. There is no need to Dispose the NativeArray so allocated. It is not possible to free the memory by Disposing it - it is automatically freed after the end of the next Update for this World.
Declaration
public NativeArray<T> AllocateNativeArray<T>(int length) where T : unmanaged
Parameters
Type | Name | Description |
---|---|---|
int | length | The length of the NativeArray to allocate, measured in elements. |
Returns
Type | Description |
---|---|
NativeArray<T> | The NativeArray allocated by this function. |
Type Parameters
Name | Description |
---|---|
T | The element type of the NativeArray to allocate. |
AllocateNativeList<T>(int)
Allocate a NativeList of type T from memory that is guaranteed to remain valid until the end of the next Update of this World. There is no need to Dispose the NativeList so allocated. It is not possible to free the memory by Disposing it - it is automatically freed after the end of the next Update for this World. The NativeList must be initialized with its maximum capacity; if it were to dynamically resize, up to 1/2 of the total final capacity would be wasted, because the memory can't be dynamically freed.
Declaration
public NativeList<T> AllocateNativeList<T>(int capacity) where T : unmanaged
Parameters
Type | Name | Description |
---|---|---|
int | capacity | The capacity of the NativeList to allocate, measured in elements. |
Returns
Type | Description |
---|---|
NativeList<T> | The NativeList allocated by this function. |
Type Parameters
Name | Description |
---|---|
T | The element type of the NativeList to allocate. |
Dispose()
Dispose the allocator. This must be called to free the memory blocks that were allocated from the system.
Declaration
public void Dispose()
Initialize(int, bool)
Initializes the allocator. Must be called before first use.
Declaration
public void Initialize(int initialSizeInBytes, bool enableBlockFree = false)
Parameters
Type | Name | Description |
---|---|---|
int | initialSizeInBytes | The initial capacity of the allocator, in bytes |
bool | enableBlockFree | A flag indicating if allocator enables individual block free |
Rewind()
Rewind the allocator; invalidate all allocations made from it, and potentially also free memory blocks it has allocated from the system.
Declaration
public void Rewind()
Try(ref Block)
Try to allocate, free, or reallocate a block of memory. This is an internal function, and is not generally called by the user.
Declaration
public int Try(ref AllocatorManager.Block block)
Parameters
Type | Name | Description |
---|---|---|
AllocatorManager.Block | block | The memory block to allocate, free, or reallocate |
Returns
Type | Description |
---|---|
int | 0 if successful. Otherwise, returns the error code from the allocator function. |