![]() |
|
|
![]()
|
|
| nullpoint |
|
||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 4.6.2013 Репутация: нет Всего: нет |
Добрый вечер. Объясните новичку, пожалуйста. Нужно ли для массива QByteArray указывать размер или выделять под него память динамически (размер данных в массиве всегда один), или QT сам выделит необходимое количество памяти под данные? Например, создаю массив (в mainwindow.h):
В mainwindows.cpp записываю в него сначала 2 байта:
Затем дописываю еще 8 байт:
Итого размер массива 10 байт. Далее выполняю какие-то действия и очищаю массив:
И так каждый раз при вызове функции, в которой заполняется массив (значения в массиве будут каждый раз новые, здесь указал просто для примера). Нужно ли выделять под него память? Размер массива всегда будет 10 байт. В документации сказано:
И приведен пример:
Т.е. сначала размер x был 5 байт, а после операции += стал 8 байт. Правильно ли я понимаю, что мне не нужно указывать размер массива, и QT сам выделит памяти сколько нужно при добавлении данных в массив? |
||||||||||||
|
|||||||||||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Да, QByteArray сам выделяет память.
Но чтобы память не выделялась при каждом добавлении байта, можно вызвать reserve(). Узнать сколько байт выделено можно с помощью capacity(). size() выдаёт сколько из них используется. squeeze() освободжает неиспользованную память. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |