| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QByteArray и выделение памяти |
| Автор: nullpoint 1.6.2015, 21:04 | ||||||||||||
Добрый вечер. Объясните новичку, пожалуйста. Нужно ли для массива QByteArray указывать размер или выделять под него память динамически (размер данных в массиве всегда один), или QT сам выделит необходимое количество памяти под данные? Например, создаю массив (в mainwindow.h):
В mainwindows.cpp записываю в него сначала 2 байта:
Затем дописываю еще 8 байт:
Итого размер массива 10 байт. Далее выполняю какие-то действия и очищаю массив:
И так каждый раз при вызове функции, в которой заполняется массив (значения в массиве будут каждый раз новые, здесь указал просто для примера). Нужно ли выделять под него память? Размер массива всегда будет 10 байт. В документации сказано:
И приведен пример:
Т.е. сначала размер x был 5 байт, а после операции += стал 8 байт. Правильно ли я понимаю, что мне не нужно указывать размер массива, и QT сам выделит памяти сколько нужно при добавлении данных в массив? |
| Автор: math64 2.6.2015, 08:45 |
| Да, QByteArray сам выделяет память. Но чтобы память не выделялась при каждом добавлении байта, можно вызвать reserve(). Узнать сколько байт выделено можно с помощью capacity(). size() выдаёт сколько из них используется. squeeze() освободжает неиспользованную память. |