处理大型数组而没有得到运行时错误

问题描述:

当我使用大小为10^5 * 10^5的数组时,出现运行时错误(例如:int a[100000][100000]。由于此数组消耗更多内存,这可能是其中一个原因对于处理大型数组而没有得到运行时错误

运行时错误。我应该如何声明数组(二维数组前。int a[100000][100000]),这样我可以SIGSEGV运行时错误的难题呢?

请提供的方法来声明这样类型的数组?

+0

动态分配? – 2015-04-04 08:39:15

+0

您在这里分配80GB的内存,除非机器具有那么多的虚拟RAM,至少是其中一个问题 – camelccc 2015-04-04 08:52:04

+0

当我尝试在线编码plafeorm中提交解决方案时,动态分配也会给此阵列大小带来运行时错误。 – 2015-04-04 08:52:43

三种申报大数组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);