我们什么时候应该在 .NET 中使用 NativeMemory.Alloc()?

When should we use NativeMemory.Alloc() in .NET?

.NET6/C#引入了NativeMemory class,但是我没有得到什么时候我们应该使用NativeMemory.Alloc()而不是正常的数组实例化(new T[]) .我的问题是:

  1. 内存中的哪个区域 NativeMemory.Alloc() 填充对象?该方法是否填充托管堆中的对象?

  2. 什么情况下应该用NativeMemory.Alloc()代替new T[]

参考: https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.nativememory?view=net-6.0

看起来它是“C malloc API 的薄包装。”因此,如果我没记错的话,它会在非托管堆上分配内存。

至于第二个问题,我真的想不出在 .NET 中有用的任何特定场景(除了一些边缘情况)(尽管我确定它们存在)尚未使用 C/C++。尽管如此,我想人们会在速度绝对最重要的地方使用它(例如渲染)。

它刚刚被添加,这样我们就可以选择使用 C/C++,就像内存管理一样。