处理大型数组而没有得到运行时错误
问题描述:
当我使用大小为10^5 * 10^5的数组时,出现运行时错误(例如:int a[100000][100000]
。由于此数组消耗更多内存,这可能是其中一个原因对于处理大型数组而没有得到运行时错误
运行时错误。我应该如何声明数组(二维数组前。int a[100000][100000]
),这样我可以SIGSEGV
运行时错误的难题呢?
请提供的方法来声明这样类型的数组?
答
三种申报大数组int a[100000][100000]
的方法是:
- 让大阵全球
-
让大阵
static
:static int a[100000][100000];
-
使用
malloc
/calloc
和动态分配的大阵:int **a; a=malloc(sizeof(int*)*100000); for(int i=0;i<100000;i++) a[i]=malloc(sizeof(int)*100000); /*Use the array*/ for(int i=0;i<100000;i++) free(a[i]); free(a);
动态分配? – 2015-04-04 08:39:15
您在这里分配80GB的内存,除非机器具有那么多的虚拟RAM,至少是其中一个问题 – camelccc 2015-04-04 08:52:04
当我尝试在线编码plafeorm中提交解决方案时,动态分配也会给此阵列大小带来运行时错误。 – 2015-04-04 08:52:43