Беги без проблем в первый раз, но когда я комментирую часть кода, завершение программы:Двоичный файл ошибка чтения
ответ
Проблема заключается в том, что вы пытаетесь для чтения объектов, которые вы действительно не можете сохранить в файлах, или загрузки из файлов.
Позволяет принять этот std::string
член name
. Объекты std::string
в основном представляют собой только указатель динамически выделенному массиву символов (т. Е. Строку с нулевым символом в стиле С), а также длину содержащейся строки. Проблема двояка: во-первых, при попытке сохранить объект name
он не сохраняет строку, а указатель; И вторая проблема заключается в том, что указатели на динамически распределенные данные являются уникальными для каждого процесса.
Что происходит, когда вы загружаете объект, вы читаете и устанавливаете указатель, но только указатель. Этот указатель был действителен в процессе, который писал объект, но не в текущем процессе, он не указывает на какую-либо действительную память, выделенную вашим процессом. Используя этот указатель, который выполняется при использовании строкового объекта, затем приведет к неопределенным поведением и UB нам одной из наиболее распространенных причин сбоев.
Что вам нужно сделать, это serialize строка. Если вы хотите написать код самостоятельно, а не использовать библиотеку для него (есть много великолепных библиотек сериализации, которые вы можете использовать), тогда вам нужно записать длину строки как целое число фиксированного размера, а затем записать фактические строковые данные. Когда вы deserialize, вы сначала должны знать, что следующая часть данных для чтения является строкой, а затем читать длину, затем строковые данные, а затем строить из этого строковый объект.
Я добавил
- 1. отладки строки чтения/записи в двоичный файл
- 2. Java двоичный объект чтения
- 3. XML-файл, ошибка чтения
- 4. XLSX файл, ошибка чтения
- 5. Ошибка сегментации при копировании в двоичный файл
- 6. Добавить двоичный файл в другой двоичный файл
- 7. Как интерпретировать двоичный двоичный файл
- 8. Python struct.unpack двоичный файл
- 9. Ошибка чтения CSV файл unicodeescape
- 10. Ошибка чтения WIX .wxs файл
- 11. Ошибка чтения файл ресурсов с #
- 12. Двоичный файл-меню для записи и чтения, c c issue
- 13. Двоичный файл XML Ошибка раздувания класса
- 14. Ошибка формата Exec. Двоичный файл не исполняемый
- 15. Двоичный файл Отказано в
- 16. FOPEN стенает двоичный файл
- 17. Ошибка чтения двоичного файла
- 18. чтения буферном двоичный файла (с поиском)
- 19. Простой двоичный код чтения-записи не работает
- 20. Двоичный поиск Дерево чтения в строках? C++
- 21. Читать двоичный файл, не может выполнить двоичный файл: EXEC ошибка форматирования
- 22. Запись массива в двоичный файл?
- 23. Попытка развернуть двоичный файл в место, где уже сохранен другой двоичный файл Существующий двоичный код
- 24. Скопировать список в двоичный файл
- 25. Как создать двоичный файл
- 26. ifstream двоичный файл неправильно
- 27. C++ сокет двоичный файл
- 28. Двоичный сериализованный файл - Delphi
- 29. Невозможно написать двоичный файл
- 30. Запись в двоичный файл?
Пожалуйста, не размещайте изображения * текста *, особенно ссылки на изображения. Если ссылки затянутся, ваш вопрос станет бесполезным. Вместо этого скопируйте текст в текст вопроса. Пожалуйста, [прочитайте о том, как задавать хорошие вопросы] (http://stackoverflow.com/help/how-to-ask), и узнайте, как создать [Минимальный, Полный и Подтверждаемый пример] (http: // stackoverflow. ком/помощь/mcve). –
можете ли вы поделиться своим кодом здесь? – Mostafiz