Ошибка переполнения стека

Рейтинг: 0Ответов: 1Опубликовано: 20.06.2011

Подскажите, пожалуйста, есть ли ограничения по размеру на char[]? К примеру, у меня выделятся так

char[buf]= "";

где выше есть такое

#define buf 10000

но такого размера мало, увеличил его значительно - на 2 порядка и выдает такое сообщение:

Unhandled exception at 0x00ac81e7 in XXX.exe: 0xC00000FD: Stack overflow.

т.е. все равно переполняет? тока вот открывает какой-то левый файл при вылете, до этого указывал на строку в самой программе; эта ошибка вылетает, когда я пытаюсь сохранить данные расчетов в файл.

Дополнено.

При возврате к прежним размерам выдает следующую ошибку:

Microsoft Visual Studio C Runtime Library has detected a fatal error in XXX.exe.

И указывает на строку вида: strcat_s(cResult,";"); где char cResult[BUF_SIZE]="";

Ответы

▲ 2

Существует ограничение на размер стека. В твоем случае я бы рекомендовал выделять память не статически, а динамически, ограничение все-равно будет(но очень большое, если мне память не изменяет 2 ГБ на 32-битных, и 4 ГБ на 64-битных ОС), но скорее всего для твоих нужд хватит. Динамически это вот так:

char * buf = new char[10000000];
...
delete[] buf;