Первая проверка, которую я бы сделал, - это проверка того, что ошибка действительно связана с ошибкой двойного освобождения.Иногда при запуске программы (в том числе с valgrind) может появляться ошибка, связанная с двойным освобождением, в то время как на самом деле это проблема повреждения памяти (например, переполнение памяти).
Лучший способ проверить это - применить советподробности в ответах: Как отследить ошибку двойного освобождения или повреждения в C ++ с помощью gdb .
Прежде всего, вы можете попробовать скомпилировать вашу программу с флагами fsanitize=address -g
.Это обеспечит память программы во время выполнения для отслеживания всех выделений, обнаружения переполнений и т. Д.
В любом случае, если проблема действительно является двойной, сообщение об ошибке должно содержать все необходимыеинформация для устранения неполадки.