Ответы пользователя по тегу C++
  • Как исправить AccessViolation при чтении указателя, считанного при помощь CArchive?

    @kos_dev Автор вопроса
    Мало ли кому-то понадобится решение подобной проблемы.
    Суть в том, что сперва CArchive при записи пишет размер коллекции, а после саму коллекцию. А при чтении из файла мы с помощью CArchive считываем сперва размер коллекции, который в файле, а после каждый объект.
    Так вот, ошибка была довольно простая - записывали мы размер как vectorObject.size() - который возвращает объект size_t размером 8 байт, а считывали размер в INT, размер которого 4 байта, тем самым продолжая считывание уже объектов из файла - порождались NULL объекты.
    Для решения достаточно либо записывать размер как (INT) vectorObject.size() и считывать размер так же в INT.
    Либо записывать vectorObject.size() -> size_t значение, ну и считывать соответственно тоже:
    size_t count;
    ar >> count;
    Ответ написан
    Комментировать