падение после некоторой итерации пользовательского дерева c ++ - PullRequest
0 голосов
/ 15 октября 2018

Я пишу простой скользящий тайл (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 Ответ

0 голосов
/ 15 октября 2018

Внутри вашего диапазона, основанного на циклах, которые вы добавляете в список:

for(auto v : open)
    if(!(v.s==tree->childs[i].s))
        open.push_back(tree->childs[i]);

Это приведет к увеличению списка и запуску другой итерации, пока вся память на вашем компьютере не будет исчерпана.Ваша машина, вероятно, не зависает, просто становится очень медленной, в то время как ваша ОС подменяет память на диск.

...