Повышение dynamic_bitset для большого набора данных

Я записываю очень большие данные в файл, это результат кодирования Хаффмана, который мне нужно сохранить в файл и прочитать позже. Я наткнулся на идею использования dynamic_bitset для обработки битов. Я протестировал свой код на небольших данных, и он отлично работает, но на больших данных (кодирование изображения) он терпит неудачу и падает. Вот как выглядит переменная, которую я пытаюсь сохранить:

_encodedSig {m_bits={ size=46944 } m_num_bits=1502195 } boost::dynamic_bitset<unsigned long,std::allocator<unsigned long> > &

Однако, когда я использую функцию size(), она возвращает 16, что меня сбивает с толку. Я попытался протестировать, чтобы преобразовать его в unsigned long, но он выдает исключение. Интересно, сколько данных может обрабатывать динамический bit_set и почему m_num_bits не равно size(). Буду признателен за любые мысли и идеи.


person user3178756    schedule 13.02.2017    source источник
comment
на каком языке _encodedSig {m_bits={ size=46944 } m_num_bits=1502195 }? I tried testing to convert it to unsigned long but it throws an exception - как? Потому что кастинг этого не бросит. why the m_num_bits is not equal to size() – я подозреваю неопределенное поведение   -  person sehe    schedule 13.02.2017
comment
Возможно, вам это покажется интересным: stackoverflow.com /вопросы/31006792/   -  person sehe    schedule 13.02.2017
comment
@sehe Это результат отладки и то, как переменная выглядит во время выполнения. Это неопределенное поведение, и я только что нашел проблему. Я использовал size_t, чтобы получить размер битов. теперь я изменил его на unsinged long long, и он работает. но мне интересно, будет ли это проблемой, когда мои данные станут больше. Спасибо за ссылку, я действительно использую тот же метод для сохранения в файл.   -  person user3178756    schedule 13.02.2017