MemCmp(void*, void*, long)
Checks whether two memory regions are identical.
Read time 2 minutesLast updated 12 days ago
Definition
- Type: Method
- Namespace: Unity.Collections.LowLevel.Unsafe
- Assembly: UnityEngine.CoreModule
public static int MemCmp(void* ptr1, void* ptr2, long size)
Parameters
A pointer to the first memory buffer. This buffer contains the first block of data to compare.
A pointer to the second memory buffer to compare against the first. Ensure this buffer is the same size as the first for an accurate comparison.
The number of bytes to compare between the two memory regions.
Returns
Type | Description |
|---|---|
| int | Returns 0 if the contents of the two memory regions are identical; returns a non-zero value if they differ. |
Remarks
The method compares two memory regions to determine if they contain identical data. It returns zero if the memory contents are the same and a non-zero value if they differ. This method can be used to compare data blocks efficiently in performance-critical applications.
MemCmpusing 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) } }}
Additional Resources: UnsafeUtility.MemSet.