Проблема, как я вижу, зарыта в реализации метода
map::copy
, вот в
этом месте. Нельзя копировать сложные объекты функцией
memcpy()
, потому что при удалении копии её деструктор освободит данные оригинала. Для такого копирования следует либо использовать placement new, либо копировать целиком объект Node,
типа того. Для того чтобы это работало потребуется реализовать глобальный оператор new,
типа того. С этими изменениями конкретно описанная в топике проблема решается, но я вижу, что и другие методы класса
map
реализованы с похожими ошибками, так что не расслабляйся и не думай, что это была единственная проблема в коде.
Отдельный вопрос: зачем
FileSystem::get_root()
копирует всё дерево файловой системы, когда
FileSystem::tree()
явно не собирается его менять, можно было бы в этом случае обойтись константной ссылкой.