UnsafeUtility.MemCpy
Declaration
public static void MemCpy(void* destination, void* source, long size);Параметры
| Параметр | Описание |
|---|---|
| место назначения | Указатель на блок памяти назначения. Убедитесь, что этот блок достаточно большой для хранения копируемых данных. |
| источник | Указатель на блок исходной памяти. Этот блок должен содержать данные, которые нужно скопировать. |
| размер | Число байт, которые должны быть скопированы из источника в назначение. |
Описание
Копирует указанное количество байтов из расположения исходной памяти в расположение конечной памяти.
Метод MemCpy эффективно копирует данные из одного места в памяти в другое. Он идеально подходит для быстрого дублирования содержимого памяти в приложениях, требующих высокой производительности. Обратите внимание, что если области памяти источника и назначения перекрываются, то результат не гарантированно будет правильным. В таких случаях используйте UnsafeUtility.MemMove для безопасной обработки перекрывающихся данных.
using UnityEngine; using Unity.Collections.LowLevel.Unsafe;
public class MemCpyExample : MonoBehaviour { void Start() { int numElements = 5; int size = numElements * sizeof(float);
// Use stackalloc to allocate memory for source and destination buffers unsafe { float* srcBuffer = stackalloc float[numElements]; float* dstBuffer = stackalloc float[numElements];
// Initialize the source buffer with data for (int i = 0; i < numElements; i++) { srcBuffer[i] = i * 1.5f; // Fills srcBuffer with values 0.0, 1.5, 3.0, 4.5, 6.0 }
// Use MemCpy to copy data from source to destination UnsafeUtility.MemCpy(dstBuffer, srcBuffer, size);
// Output the contents of the destination buffer to verify the copy Debug.Log("Contents of destination buffer after MemCpy:"); for (int i = 0; i < numElements; i++) { Debug.Log(dstBuffer[i]); // Expected output: 0.0, 1.5, 3.0, 4.5, 6.0 } } } }
Дополнительные ресурсы: ,UnsafeUtility.MemMove,.