C#申请大内存空间的二维数组
2017-06-15 10:23
375 查看
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
;
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");
}
最近在做图像处理时,遇到要申请大内存的二维数组问题,首先用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
;
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");
}
相关文章推荐
- C# 释放C++DLL 中申请的内存空间
- 二维数组,结构体动态申请内存空间
- 动态二维数组的申请、赋初值、使用、释放空间
- 连续内存空间的申请(一次性申请全部和利用指针数组每个元素分别申请)
- 申请内存空间和释放内存空间
- <C/C++>指针在什么时候需要申请内存空间?
- 循环左移字符串,不申请内存空间
- 二维数组的动态申请空间并参数传给函数
- 二维数组动态申请空间以及二维数组函数传参问题
- 动态链表的创建、节点内存空间申请以及释放
- #define ROUND(x,y) (((x)+(y-1))&~(y-1))申请内存空间时,为了减少内存碎片
- 在不申请新内存空间条件下交换两个数的值
- 在不申请新内存空间条件下交换两个数的值
- 二维数组的内存申请
- 虚拟字符驱动,申请n页内存,使用mmap映射到应用程序空间,用户就可以直接访问不需要任何同步机制
- malloc动态申请内存空间对程序效率的影响
- C++测试申请最大内存空间
- 【经典面试题】有关指针、内存空间如何申请调用的问题
- char*及char[]申请内存空间区别
- 一维数组和二维数组空间的内存动态分配、参数传递