Unity NativeArray 内存解析
本文要揭示NativeArray真的是使用Native Memory的整个过程.
代码来源:C#部分 C++部分来自于IDA pro解析UnityPlayer.dll
C#代码
先来看C#部分中的
public unsafe struct NativeArray<T> : IDisposable, IEnumerable<T>, IEquatable<NativeArray<T>> where T : struct
{
internal void* m_Buffer;
internal int m_Length;
是一个模板类
先来看下构造函数
public NativeArray(int length, Allocator allocator, NativeArrayOptions options = NativeArrayOptions.ClearMemory)
{
Allocate(length, allocator, out this);
if ((options & NativeArrayOptions.ClearMemory) == NativeArrayOptions.ClearMemory)
UnsafeUtility.MemClear(m_Buffer, (long)Length * UnsafeUtility.SizeOf<T>());
}
public NativeArray(T[] array, Allocator allocator)
{
if (array == null)
throw new ArgumentNullException(nameof(array));
Allocate(array.Length, allocator, out this);
Copy(array,<