Std::ifstream::read вызывает сбой приложения [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Std::ifstream::read вызывает сбой приложения [закрыто]

Сообщение Anonymous »


На SoC Xilinx Ultrascale+ я хочу использовать процессор Cortex-a53 для копирования двоичных данных из файла на SD-карте в назначенное пространство памяти в оперативной памяти с помощью ifstream.

Я сопоставляю виртуальное адресное пространство с помощью mmap:

// Сопоставляем целевую память int memfd = open("/dev/mem", O_RDWR | O_SYNC); void* dest_mem = mmap(0, map_size, PROT_READ | PROT_WRITE, MAP_SHARED, memfd, device_base & ~map_mask); закрыть (мемфд); Затем я выполняю копирование, что приводит к сбою моего приложения:

// Копируем данные с SD-карты в ОЗУ std::ifstream binFile(filePath, std::ios::binary); binFile.read(reinterpret_cast(dest_mem), num_bytes); // Эта строка вызывает сбой! Если вместо этого я читаю данные во временный буфер, а затем копирую их в целевой пункт назначения, все работает нормально:

// Копируем данные с SD-карты в ОЗУ, используя временный буфер std::ifstream binFile(filePath, std::ios::binary); буфер символов [число_байт]; binFile.read(reinterpret_cast(&buffer), num_bytes); // Это отлично работает std::memcpy((void*)dest_mem, (void*)&buffer, num_bytes); // Это тоже отлично работает Почему первый подход приводит к сбою приложения?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»