Для этого они должны храниться где-то, но в C кажется, что
массив занимает всего 10 ^ 6 элементов.
Совсем нет. Я думаю, что вы размещаете массив неправильно. Просто пишу
int myarray[big_number];
не будет работать, поскольку он попытается выделить память в стеке , который очень ограничен (часто размером в несколько МБ, поэтому 10 ^ 6 - хорошее практическое правило). Лучший способ - динамически распределять:
int* myarray;
int main() {
// Allocate the memory
myarray = malloc(big_number * sizeof(int));
if (!myarray) {
printf("Not enough space\n");
return -1;
}
// ...
// Free the allocated memory
free(myarray);
return 0;
}
Это выделит память (или, точнее, big_number * 4
байт на 32-разрядной машине) в heap . Примечание. Это также может привести к сбою, но в основном оно ограничено объемом свободной оперативной памяти, которая намного ближе или даже выше 10 ^ 9 (1 ГБ).