问题
I am getting runtime error when I used array of size 10^5*10^5 (ex. int a[100000][100000]. As this array is consuming more memory, this may be one one of the reasons for runtime error.
How should I declare this array (2D array ex. int a[100000][100000]) so that I can cope with problem of SIGSEGV runtime error?
Please, provide approach to declare such type of array?
回答1:
Three ways to declare the large array int a[100000][100000] are:
- Make the large array global
Make the large array
static:static int a[100000][100000];Use
malloc/callocand dynamically allocate the large array: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);
来源:https://stackoverflow.com/questions/29444371/dealing-with-large-arrays-without-getting-runtime-error