UnsafeUtility.Malloc
Declaration
public static void* Malloc(long size, int alignment, Unity.Collections.Allocator allocator);Параметры
| Параметр | Описание |
|---|---|
| размер | Количество байтов для выделения. Убедитесь, что этот размер соответствует памяти, необходимой для данных. |
| выравнивание | Выравнивание выделенного блока памяти. |
| распределитель | Тип распределителя, например Allocator.Temp или Allocator.Persistent, указывающий, как управляется память. |
Возвращаемое значение
void* Указатель на выделенный блок памяти. Управляйте этим указателем осторожно, чтобы предотвратить утечку памяти и обеспечить правильное выделение.
Описание
Выделяет блок памяти указанного размера и выравнивания.
Метод Malloc выделяет блок неуправляемой памяти. Он позволяет разработчикам указать размер в байтах и выравнивание блока памяти. Этот метод очень важен в приложениях, требующих высокой производительности, где требуется точный контроль памяти.
Выделенная память не инициализируется до нуля. Убедитесь, что вы освобождаете выделенную память с помощью UnsafeUtility.Free, когда она больше не требуется.
using UnityEngine; using Unity.Collections; using Unity.Collections.LowLevel.Unsafe;
public class MallocExample : MonoBehaviour { void Start() { // Specify the number of elements int numElements = 10;
// Allocate memory for an array of integers unsafe { int* array = (int*)UnsafeUtility.Malloc(numElements * sizeof(int), UnsafeUtility.AlignOf<int>(), Allocator.Temp);
// Initialize the array with some values for (int i = 0; i < numElements; i++) { array[i] = i * 2; }
// Output the contents of the array for (int i = 0; i < numElements; i++) { Debug.Log(array[i]); // Expected output: 0, 2, 4, 6, ..., 18 }
// Free the allocated memory UnsafeUtility.Free(array, Allocator.Temp); } } }
Дополнительные ресурсы: ,UnsafeUtility.MallocTracked,, ,UnsafeUtility.FreeTracked,.
Declaration
public static void* Malloc(long size, int alignment, Unity.Collections.MemoryLabel label);Параметры
| Параметр | Описание |
|---|---|
| размер | Количество байтов для выделения. Убедитесь, что этот размер соответствует памяти, необходимой для данных. |
| выравнивание | Выравнивание выделенного блока памяти. |
| метка | Метка памяти для выделения под. |
Возвращаемое значение
void* Указатель на выделенный блок памяти. Управляйте этим указателем осторожно, чтобы предотвратить утечку памяти и обеспечить правильное выделение.
Описание
Выделяет блок памяти указанного размера и выравнивания с использованием указанной метки памяти.
Метод Malloc выделяет блок неуправляемой памяти. Он позволяет разработчикам указать размер в байтах и выравнивание блока памяти. Этот метод очень важен в приложениях, требующих высокой производительности, где требуется точный контроль памяти.
Указание метки памяти помогает в профилировании и отладке использования памяти в Unity.
Выделенная память не инициализируется до нуля. Убедитесь, что вы освобождаете выделенную память с помощью UnsafeUtility.Free, когда она больше не требуется.
Дополнительные ресурсы: ,MemoryLabel,, ,UnsafeUtility.MallocTracked,, ,UnsafeUtility.FreeTracked,.
using UnityEngine; using Unity.Collections; using Unity.Collections.LowLevel.Unsafe;
public class MallocMemoryLabelExample : MonoBehaviour { static readonly MemoryLabel myMemoryLabel = new MemoryLabel("MyArea", "MyObject");
void Start() { // Specify the number of elements int numElements = 10;
// Allocate memory for an array of integers using label unsafe { int* array = (int*)UnsafeUtility.Malloc(numElements * sizeof(int), UnsafeUtility.AlignOf<int>(), myMemoryLabel);
// Initialize the array with some values for (int i = 0; i < numElements; i++) { array[i] = i * 2; }
// Output the contents of the array for (int i = 0; i < numElements; i++) { Debug.Log(array[i]); // Expected output: 0, 2, 4, 6, ..., 18 }
// Free the allocated memory using label UnsafeUtility.Free(array, myMemoryLabel); } } }