@Denys557

Почему название файла в моей ОС изменяется само?

В моей ОС есть файловая система, и когда я создаю файл:
mkfile filename data
И пока что все данные правильные, потом я пишу
tree
Которое выводит дерево файлов на диске, которое выглядит так
|-- filename
Но если я напишу команду tree 2-4 раза, то название само по себе поменяется на tree(ну или же dir если писать его). Почему так?(Извините за огромное количество кода, я понятия не имею где может быть ошибка)

https://github.com/artem0011011000111001/SimpleOS
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Проблема, как я вижу, зарыта в реализации метода map::copy, вот в этом месте. Нельзя копировать сложные объекты функцией memcpy(), потому что при удалении копии её деструктор освободит данные оригинала. Для такого копирования следует либо использовать placement new, либо копировать целиком объект Node, типа того. Для того чтобы это работало потребуется реализовать глобальный оператор new, типа того. С этими изменениями конкретно описанная в топике проблема решается, но я вижу, что и другие методы класса map реализованы с похожими ошибками, так что не расслабляйся и не думай, что это была единственная проблема в коде.

Отдельный вопрос: зачем FileSystem::get_root() копирует всё дерево файловой системы, когда FileSystem::tree() явно не собирается его менять, можно было бы в этом случае обойтись константной ссылкой.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы