Падение после некоторой итерации пользовательского дерева C++
Я пишу простой скользящий тайл (3х3) решатель. Конечно, это не лучший подход, я просто генерирую все возможные конфигурации, но я не знаю, почему во время выполнения мой компьютер зависает, и я должен вручную перезагрузить компьютер. это основной цикл
while(!(tree->s==final))
{
//copy it in tree
expand_node(tree);
//check if in open then add if not
it++;
}
print_s(tree->s);
PS: я все скомпилировал с
g++ -Wall -Wextra -std=c++11 main.cpp
1 ответ
Внутри вашего диапазона, основанного на циклах, вы добавляете в список:
for(auto v : open)
if(!(v.s==tree->childs[i].s))
open.push_back(tree->childs[i]);
Это приведет к увеличению списка и запуску другой итерации, пока вся память на вашем компьютере не будет исчерпана. Ваша машина, вероятно, не зависает, просто становится очень медленной, в то время как ваша операционная система подменяет память на диск.