C# 快速释放内存的大数组
Marshal
使用Marshal快速申请释放大数组。
使用AllocHGlobal()
函数开辟空间:
static void Main(string[] args)
{
for (int i = 0; i < 10000; i++)
{
Foo();
}
Console.ReadKey();
}
private static void Foo()
{
int n = 100000;//长度
IntPtr buffer = Marshal.AllocHGlobal(sizeof(int) * n);
}
使用Marshal申请内存是没有经过管理的,如果没有手动释放,那么就出现内存泄露,手动释放内存:
Marshal.FreeHGlobal(buffer);
Marshal具体的使用方法如遍历、赋值等参考链接:C# 快速释放内存的大数组
无unsafe的非托管类大数组
大神有分享封装好的类,感兴趣的可以使用:C#+无unsafe的非托管大数组(large unmanaged array in c# without ‘unsafe’ keyword)