Я работаю над игрой, и все было хорошо, пока я не добавил некоторые функции. Я работал около месяца на этих функциях, и, к сожалению, я не был достаточно мудр, чтобы тестировать более мелкие части кода, поэтому я добавил много кодов, и теперь я получаю эту ошибку.Как отладить исключение переполнения стека?
Unhandled exception at 0x77555098 (ntdll.dll) in SFML setup.exe: 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x006D2FA8).
мой код большой, и будет очень сложно проверить каждую функцию. В стеке вызовов отладчика эта функция повторяется много раз.
void SceneNode::onCommand(const Command &command, sf::Time dt)
{
if (command.category.at(getCategory()))
command.action(*this, dt);
for(const Ptr& child : mChild)
{
child->onCommand(command, dt);
}
}
SceneNode - это древовидная структура и имеет некоторый ребенок. эта функция пытается выполнить итерацию по дереву, чтобы увидеть, какие узлы могут принимать определенную команду.
Первая ул ep: Какая из следующих возможностей применима? a) Ребенок узла X (или дочерний элемент дочернего элемента ... X) является самим X. b) В некоторых ошибках кода вставлено большое количество вложенных детей, но дети не должны существовать. c) Данные в порядке, и стек действительно слишком мал. – deviantfan
Первичные подозреваемые: 'command.action (* this, dt);' вызывает эту функцию, или 'this' является элементом' mChild'. Посмотрите на указатель 'this' в стеке вызовов в вашем отладчике, чтобы узнать, есть ли цикл в дереве узлов. – molbdnilo
Невозможно ответить на этот вопрос на основе предоставленной информации. Просьба представить минимальный рабочий пример, демонстрирующий ошибку. Создание минимального рабочего примера обычно помогает определить проблему. –