![]() ![]() 5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
|
|||||||||||
"Нарушение прав доступа при чтении по адресу" при чтении структур из бинарного файла13.12.2017, 22:48. Показов 4788. Ответов 8
Метки нет Все метки)
(
Пытаюсь разобраться со структурами в бинарных файлах.
Допустим, есть массив структур. Записываю его в бинарный файл (закомментированный код). Всё прекрасно записывается. Затем читаю и добавляю структуры в вектор. Всё прекрасно читается, добавляется и даже выводится на экран. Но при выполнении строки return 0; получаю ошибку "Нарушение прав доступа при чтении по адресу".Код:
0
|
13.12.2017, 22:48 | |
Ответы с готовыми решениями:
8
Нарушение прав доступа при чтении по адресу
|
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
|
|
13.12.2017, 23:11 | |
Даценд, вы записываете и читаете бинарные данные "как есть". Учитывая, что std::string содержит в себе указатель на данные в динамической памяти (разве что малые строки могут быть размещены внутри самого объекта), вы считываете из файла висячий указатель, а не саму строку.
1
|
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
|
|
13.12.2017, 23:28 | |
1
|
![]() ![]() 5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
|
||||||
14.12.2017, 00:57 [ТС] | ||||||
Попробовал читать/писать поля раздельно.
Вот что получилось:
![]() Особо интересно мнение о методах в структуре, и использовании private-поля для хранения длины поля name.
0
|
![]() |
|
14.12.2017, 01:18 | |
size_t nameLength; нужно бы сделать локальной переменной, а не полем класса
Ещё char* cname = new char[nameLength]; в конце этой же функции освободить delete cname а так вроде норм
1
|
![]() ![]() 5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
|
||||||
14.12.2017, 01:28 [ТС] | ||||||
Kuzia domovenok,
Благодарю. Вечно забываю память освобождать и с локальным nameLength совершенно согласен.
И проверка чтения корректна?
0
|
![]() 1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
||||||||
14.12.2017, 02:26 | ||||||||
Добавлено через 5 минут Так же, если б у вас текстовые поля имели фиксированный размер, можно было бы сделать например так.
1
|
![]() ![]() 5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
|
|||||||
14.12.2017, 10:45 [ТС] | |||||||
Пробовал проверять через eof, выбрасывает исключение:
0
|
![]() 1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
14.12.2017, 11:52 | |
Даценд, а если у вас неожиданно файл оборвется после чтения id, или в этот момент произойдет отказ диска? В программу попадут некорректные данные, что может вызвать ошибку. То, что вы и наблюдаете, когда делаете проверку на eof перед чтением первого блока. eof устанавливается после попытки считать несуществующий элемент, а не когда указатель находится в конце файла. eof-проверку вы успешно проходите перед чтением несуществующего элемента, и далее программа ведет себя некорректно, пытаясь обработать данные, полученные из нерабочего потока.
1
|
14.12.2017, 11:52 | |
Помогаю со студенческими работами здесь
9
Нарушение прав доступа при чтении по адресу
Нарушение прав доступа при чтении по адресу Нарушение прав доступа при чтении по адресу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
|
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
|
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
|
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. )
Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
|
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
|
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать?
Entity Framework — это. . .
|
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
|
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
|
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Опубликовано: 07. 07. 2025
Рубрика: Uncategorized
Автор: AlexA
Статья размещается на сайте с разрешения. . .
|
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
|