处理大型数组而不会出现运行时错误
Dealing with large arrays without getting runtime error
当我使用大小为 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);
当我使用大小为 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);