QtAV и очистка буфера

Я пишу приложение в Qt, которое позволяет потоковое видео из массива байтов. В качестве компонента вывода видео я использую QtAV ( http://www.qtav.org/). В моем случае вход этого компонента - QIODevice (QBuffer), где есть QByteArray с моими данными. Я буду помещать во время потоковой передачи данных внутри QByteArray, но я не знаю, как удалить данные, которые я еще прочитал. Моя проблема в том, что через некоторое время размерность QByteArray очень велика, и я не знаю, как я могу уменьшить выделенную память.

Спасибо

Angelo

1 ответ

Вы можете просто получить ссылку на объект байтового массива из вашего буфера, используя метод
QByteArray &QBuffer::buffer() а затем стереть это:

your_io_buffer.buffer().resize(0);

Но учтите, что частое удаление и добавление данных в динамический массив приведет к перераспределению памяти, что не является такой быстрой операцией. Поэтому я рекомендую использовать
void QByteArray::reserve(int size) метод:

QByteArray buf;
buf.reserve(100000);
//...
your_io_buffer.setBuffer(&buf);
//...
Другие вопросы по тегам