我们什么时候应该在 .NET 中使用 NativeMemory.Alloc()?
When should we use NativeMemory.Alloc() in .NET?
.NET6/C#引入了NativeMemory
class,但是我没有得到什么时候我们应该使用NativeMemory.Alloc()
而不是正常的数组实例化(new T[]
) .我的问题是:
内存中的哪个区域 NativeMemory.Alloc()
填充对象?该方法是否填充托管堆中的对象?
什么情况下应该用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++,就像内存管理一样。
.NET6/C#引入了NativeMemory
class,但是我没有得到什么时候我们应该使用NativeMemory.Alloc()
而不是正常的数组实例化(new T[]
) .我的问题是:
内存中的哪个区域
NativeMemory.Alloc()
填充对象?该方法是否填充托管堆中的对象?什么情况下应该用
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++,就像内存管理一样。