Я реализовывал шахматного бота на c ++, используя рекурсивные алгоритмы, и программа оценивает более миллиона узлов за ход.
Со временем занимаемая память достигает более 1 ГБ ОЗУ ...
Но мне действительно не нужны переменные, которые были объявлены ранее после того, как я закончил с перемещением ...
Итак, как мне вручную очистить память стека, чтобы избавиться от ранее объявленных переменных в стеке, как сборщик мусора в Java?
UPDATE
Я обнаружил, что в моем источнике есть эта строка:
Move * M = new Move(x1,y1,x2,y2);
pair <Move *, Piece *> pr (M,aPiece);
и это в функции выполнения перемещения, которая вызывается миллион раз в рекурсии ...
Мой вопрос: как бы вы очистили такую переменную после завершения всей рекурсии, и мне больше не нужна эта переменная, но пока рекурсия делает свое дело, мне нужна эта переменная, чтобы она оставалась в памяти?