Kevin がコメントで述べているように、問題は RAM ではなく、スタックです。et friendsを使用して、実際には heapに割り当てる必要があるときに、 1000 万個の要素の配列をstackに割り当てています。C でも、これによりセグメンテーション違反が発生します。malloc
/* bigarray.c */
int main(void) {
int array[10000000];
array[5000000] = 1; /* Force linux to allocate memory.*/
return 0;
}
$ gcc -O0 bigarray.c #-O0 to prevent optimizations by the compiler
$ ./a.out
Segmentation fault (core dumped)
その間:
/* bigarray2.c */
#include <stdlib.h>
int main(void) {
int *array;
array = malloc(10000000 * sizeof(int));
array[5000000] = 1;
return 0;
}
$ gcc -O0 bigarray2.c
$ ./a.out
$ echo $?
0