среда, 8 февраля 2012 г.

Segmentation fault при создании большого массива

При выполнении программы вида:
int main()
{
   int c[1000000];
   cout << "done\n";
   return 0;
}
можно получить ошибку Segmentation fault.
Это связано с переполнением стека. Локальные переменные хранятся в стеке, и там не хватает места на массив c[1000000].
Решение - выделять память из кучи.
Например, int* array = new int[1000000]; Тогда надо не забыть вызвать delete[] после этого.
 Источник - см. тут.