Можете объяснить, когда возникает эта ошибка и как от нее избавиться?
Это означает, что в стеке недостаточно места.
Причины - например, слишком глубокая рекурсия (редко), или слишком большие локальные переменные (куда чаще), или и то и другое сразу :)
Как избавиться? Опять же, можно просто в настройках компилятора поднять размер стека.
Но надежнее и лучше - посмотреть, нет ли слишком глубокой (вплоть до бесконечности) рекурсии, заменить локальные массивы на выделяемые динамически.
int f()
{
int a[1000000];
практически гарантированно даст переполнение стека. В отличие от
int f()
{
int * a = new int[1000000]; // Только не забудьте потом удалить...
или
vector<int> a(1000000);
Словом, смотрите, кто съедает много стековой памяти, и избавляйтесь от него...
Нужно из файла (вот его текст) спарсить только что, что находится между тегом <keyMaterial> </keyMaterial>Как можно это реализовать на С++?