R
Қаз. 21, 2020, 5:46 Т.Ж.

Динамическое выделение памяти под компоненты в QT

Объясните, будьте добры, почему во всех примерах идет выделение памяти динамически, т.е. new PushButton, new QLabel, new QRegExpValidator, но при этом создаются в стеке QRegExp и т.д. Скиньте литературу или статьи где я могу об этом почитать, ничего толкового в интернете не нашел по этому вопросу. И есть ли какой либо сайт с заданиями по QT как CodeAbbay например?

2

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

4
ДК
  • Қаз. 21, 2020, 10:39 Т.Қ.
  • (өңделген)

Вьюху на стеке не создают- слишком жирно. А QRegExp невелик.

    R
    • Қаз. 22, 2020, 12:31 Т.Ж.

    В каком смысле слишком жирно? Все же не могу понять, можно объемнее ответить, пожалуйста?

      ДК
      • Қаз. 22, 2020, 2:38 Т.Қ.
      • (өңделген)

      объем стека, если я не обшибаюсь, для каждого потока на 32 битной машине = 1мб (64 = 4мб), но размер стека можно менять, хотя, не рекомендуется. И доступ к этим данным есть только, пока жив поток. Обращение к данным по указателю дольше, но и когда заводим переменную в куче, то переменная доступна не только во время жизни потока, но и на протяжении работы всей программы/приложения.
      Переполнение стека = падает программа. Сам исполняемый код не помещается в стек, но хранит адреса и регистр процессора не обратится к стеку для его выполнения. В стеке просто адреса и локальные переменные.
      Вообще, управление памятью - объемная тема и можно копать долго, советую самостоятельно изучить её, тк в моем понимании, наверняка, пробелы. Но, что не стоит делать, дак это пытаться выделять на стеке объемные данные, тем более вью.

        R
        • Қаз. 22, 2020, 11:12 Т.Қ.

        Понял, спасибо)

          Пікірлер

          Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
          Кіріңіз немесе Тіркеліңіз