当我使用大小为10 ^ 5 * 10 ^ 5(例如int a[100000][100000]
的数组时,我收到运行时错误。由于此数组消耗更多内存,这可能是运行时错误的原因之一。
我应该如何声明这个数组(前面是int a[100000][100000]
的2D数组),以便我可以解决SIGSEGV
运行时错误的问题?
请提供声明这种类型数组的方法吗?
答案 0 :(得分:0)
声明大数组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);