C#申请大内存空间的二维数组
最近在做图像处理时,遇到要申请大内存的二维数组问题,首先用New,结果总报内存溢出。后来改用System.Array,网上资料又少,Demo也找不到合适的,所以就做了个Demo,调通了,不过还存在一个问题,Demo单独运行没问题,但是放到图像的APP中对于大于10000的行数据还是会溢出,现在分享给大家,互相学习,共同改进。
我是在VS2013下创建了窗口应用程序,将申请的代码写到了form_load中,调试通过输出窗口查看运行结果。
private void Form1_Load(object sender, EventArgs e)
{
//申请大内存空间的二维数组
int n = 20500;
System.Array bandArrayG=System.Array.CreateInstance(typeof(Int16),n,n) ;
for (int j = 0; j < n; j++)
{
Int16[] p = new Int16[n];
for (int i = 0; i < n; i++)
{
p[i] =(Int16)((i*j)%1000);
bandArrayG.SetValue(p[i],i,j) ;
}
}
for (int i = 0; i < n; i++)
{
System.Console.Write('\t');
System.Console.Write(bandArrayG.GetValue(i, 10));
}
System.Console.Write("Successs");
}
{
//申请大内存空间的二维数组
int n = 20500;
System.Array bandArrayG=System.Array.CreateInstance(typeof(Int16),n,n) ;
for (int j = 0; j < n; j++)
{
Int16[] p = new Int16[n];
for (int i = 0; i < n; i++)
{
p[i] =(Int16)((i*j)%1000);
bandArrayG.SetValue(p[i],i,j) ;
}
}
for (int i = 0; i < n; i++)
{
System.Console.Write('\t');
System.Console.Write(bandArrayG.GetValue(i, 10));
}
System.Console.Write("Successs");
}