Unity 6.3
0 онлайн 8 гостей 3 в системе
Вход

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); } } }