处理大型数组而不会出现运行时错误

时间:2015-04-04 08:37:28

标签: c arrays runtime sigsegv

当我使用大小为10 ^ 5 * 10 ^ 5(例如int a[100000][100000]的数组时,我收到运行时错误。由于此数组消耗更多内存,这可能是运行时错误的原因之一。

我应该如何声明这个数组(前面是int a[100000][100000]的2D数组),以便我可以解决SIGSEGV运行时错误的问题?

请提供声明这种类型数组的方法吗?

1 个答案:

答案 0 :(得分:0)

声明大数组int a[100000][100000]的三种方法是:

  1. 使大数组全局
  2. 制作大型数组static

    static int a[100000][100000];
    
  3. 使用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);