Free() не работает при разработке бота для шашек [закрыто] ⇐ C++
Free() не работает при разработке бота для шашек [закрыто]
Пишу код для шашечного бота. Для целей оценки я создал структуру под названием дерево
дерево структуры{ состояние игры; движение движение; интервал оценки; интервал н; int в глубину; дерево** ребенок; }; Теперь здесь n представляет количество ходов после определенной позиции, а переменная state хранит всю необходимую информацию о доске, а дочерний элемент представляет позиции после выполнения определенного хода из текущей позиции. Вот функция, которая освободит все дерево
void free_node(узел дерева*){ если (узел == NULL) возврат; если (узел->n == 0){ бесплатно (узел); возвращаться; } еще { for (int i=node->n-1; i>=0; i--){ free_node(узел->ребенок); // сначала освобождаем глубину } бесплатно (узел); // освобождаем текущий узел возвращаться; } } Теперь игра начинается с самого начала: пользователю запрашивается ход, а затем бот делает свой ход. Когда я запускаю программу вместе с диспетчером задач, она показывает 300 МБ памяти, используемой ./a.exe (exe-файл кода) при первой оценке, затем 500 МБ и до 2 ГБ, после чего моя программа убивается. Моя программа работает только несколько ходов, после чего ее убивают. Сначала я думал, что у конкретной позиции будет большое дерево, но если начать оценку этой позиции, она прошла нормально, используя около 500 МБ памяти. Я вижу, что бесплатно не работает, так как после каждого хода память накапливается. Я не могу найти решение для этого. Я назначил все, используя только malloc. Буду признателен за любые усилия
Пишу код для шашечного бота. Для целей оценки я создал структуру под названием дерево
дерево структуры{ состояние игры; движение движение; интервал оценки; интервал н; int в глубину; дерево** ребенок; }; Теперь здесь n представляет количество ходов после определенной позиции, а переменная state хранит всю необходимую информацию о доске, а дочерний элемент представляет позиции после выполнения определенного хода из текущей позиции. Вот функция, которая освободит все дерево
void free_node(узел дерева*){ если (узел == NULL) возврат; если (узел->n == 0){ бесплатно (узел); возвращаться; } еще { for (int i=node->n-1; i>=0; i--){ free_node(узел->ребенок); // сначала освобождаем глубину } бесплатно (узел); // освобождаем текущий узел возвращаться; } } Теперь игра начинается с самого начала: пользователю запрашивается ход, а затем бот делает свой ход. Когда я запускаю программу вместе с диспетчером задач, она показывает 300 МБ памяти, используемой ./a.exe (exe-файл кода) при первой оценке, затем 500 МБ и до 2 ГБ, после чего моя программа убивается. Моя программа работает только несколько ходов, после чего ее убивают. Сначала я думал, что у конкретной позиции будет большое дерево, но если начать оценку этой позиции, она прошла нормально, используя около 500 МБ памяти. Я вижу, что бесплатно не работает, так как после каждого хода память накапливается. Я не могу найти решение для этого. Я назначил все, используя только malloc. Буду признателен за любые усилия
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение