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);
//...