![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
AXELman4ever |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 31 Регистрация: 22.9.2011 Пользователь №: 2902 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Доброго времени суток. Перечитал множество информации касательно работы этих контейнеров, но так и не нашел ответ на вопрос "Так где же хранится то, что находится в контейнере?" - в стеке или куче?
К примеру, я имею: QVector<int> vect_int; и QVector<QWidget *> vect_widget; вызывая метод push_back() для обеих случаев, что происходит в памяти, что кладется в мой вектор, и где хранится то, что кладется в мой вектор? или другими словами - где вектор хранит ссылки на объекты или же сами объекты? в контейнерах QList и QMap происходит тоже самое? (о том что такое QList, QMap, и о принципах их роботы мне известно) Убедительная просьба - растолковать. Перекопал весь инет - нигде ничего об этом не упоминается. Заранее благодарен. |
|
|
![]() |
Авварон |
![]()
Сообщение
#2
|
![]() Студент ![]() Группа: Участник Сообщений: 99 Регистрация: 26.4.2009 Пользователь №: 709 Спасибо сказали: 14 раз(а) Репутация: ![]() ![]() ![]() |
Всегда в куче. Имея размер стека 2мб много данных не похранишь.
|
|
|
AXELman4ever |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 31 Регистрация: 22.9.2011 Пользователь №: 2902 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Vass |
![]()
Сообщение
#4
|
![]() Студент ![]() Группа: Участник Сообщений: 46 Регистрация: 17.3.2009 Из: Россия, Рыбинск Пользователь №: 617 Спасибо сказали: 8 раз(а) Репутация: ![]() ![]() ![]() |
Ок, а каким образом получается так, что объекты, хранящиеся в куче занимают места по порядку? Об этом заботится архитектура класса? Да, если вы откроете qvector.h/cpp Вы увидите там приватный класс QVectorData С такими методами:
Если внимательно изучить код, то становится видно, что класс QVector выделяет на куче кусок памяти и в нем по порядку размещает элементы, соответсвенно если не хватает места вызывается reallocate ну и т.д. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 7.5.2025, 2:56 |