UnsafeUtility.MemCmp
Declaration
public static int MemCmp(void* ptr1, void* ptr2, long size);Параметры
| Параметр | Описание |
|---|---|
| ptr1 | Указатель на первый буфер памяти. Этот буфер содержит первый блок данных для сравнения. |
| ptr2 | Указатель на второй буфер памяти для сравнения с первым. Для точного сравнения убедитесь, что этот буфер имеет такой же размер, как и первый. |
| размер | Число байтов, которые будут сравниваться между двумя областями памяти. |
Возвращаемое значение
инт Возвращает 0, если содержимое двух областей памяти идентично; возвращает ненулевое значение, если они отличаются.
Описание
Проверяет идентичность двух областей памяти.
Метод MemCmp сравнивает два региона памяти, чтобы определить, содержат ли они идентичные данные. Он возвращает нуль, если содержимое памяти одинаково, и ненулевое значение, если оно отличается. Этот метод может быть использован для эффективного сравнения блоков данных в критически важных приложениях.
using UnityEngine; using Unity.Collections.LowLevel.Unsafe;
public class MemCmpExample : MonoBehaviour { void Start() { int numElements = 5; int size = numElements * sizeof(int); unsafe { // Use stackalloc to allocate memory for three buffers int* buffer1 = stackalloc int[numElements]; int* buffer2 = stackalloc int[numElements]; int* buffer3 = stackalloc int[numElements];
// Initialize buffer1 with data for (int i = 0; i < numElements; i++) { buffer1[i] = i * 10; // 0, 10, 20, 30, 40 }
// Copy contents from buffer1 to buffer2 UnsafeUtility.MemCpy(buffer2, buffer1, size);
// Modify buffer3 differently for (int i = 0; i < numElements; i++) { buffer3[i] = buffer1[i] + 1; // 1, 11, 21, 31, 41 }
// Compare buffer1 and buffer2 int result1 = UnsafeUtility.MemCmp(buffer1, buffer2, size); Debug.Log($"Comparing buffer1 and buffer2, Result: {result1}"); // Expected output: 0 (identical)
// Compare buffer1 and buffer3 int result2 = UnsafeUtility.MemCmp(buffer1, buffer3, size); Debug.Log($"Comparing buffer1 and buffer3, Result: {result2}"); // Expected output: non-zero (different) } } }
Дополнительные ресурсы: ,UnsafeUtility.MemSet,.