Когда объект класса будет выделен?

0

Я все еще чувствую путаницу в классе, в C++ класс является определяемым пользователем типом.
Я думаю, прежде чем он будет создан, ОС ничего не сделает для этого. Для одного объекта класса он будет выделен во время выполнения.
Если да, то что будет сделано во время компиляции? Во время компиляции OS, выбирающая одну из функций имени, основанных на ее аргументе, определяет размер переменной-члена, а также размер функции-члена.

Аналогично одной функции, будет ли она загружаться в CPU во время компиляции или времени выполнения? Думаю, в качестве каждой функции он будет прикреплен к одному стеку, поэтому функция будет загружена во время выполнения. Надеюсь, кто-то может помочь мне исправить мое недоразумение.

Спасибо.

Теги:
memory

2 ответа

0

Все экземпляры классов назначаются во время выполнения программы (если только это не помещается в ПЗУ). Вопрос заключается не столько в том, когда, но в том, где в RAM/ROM доступно для вашего процессора (ов), которые они выделены, и, если это вообще связано с ОС.

В общем, существуют разные типы памяти, которые используются для хранения классов

  • Распределенная память в стеке
  • Память, выделенная кучей
  • Глобальная статическая память
  • Глобальная постоянная постоянная память (для постоянных значений)

Задача процесса компиляции и компоновки заключается в правильном размещении и вычислении адресов памяти, которые могут использоваться в функциях, работающих на них.

Единственной задачей, в которой должна быть задействована ОС, может быть выделение памяти кучи, но есть и другие возможности для рулонирования собственного управления памятью кучи на пустой металлической системе.

0

Операционная система никогда не знает вашего класса.

Во время компиляции компилятор определит структуру памяти для вашего класса. Во время ссылки компоновщик определит макет памяти вашего приложения, включая наши классы. Во время выполнения ОС загрузит ваш исполняемый файл в память, но он все еще не знает классов.

  • 0
    По вашему объяснению. Я пришел к следующему выводу. Выделение памяти для класса, а также программы происходит до времени выполнения. А именно, поскольку программа состоит из нескольких потоков, таким образом, потоки будут распределяться один за другим при запуске к ним во время выполнения. Кроме того, во время соединения процессор будет отвечать за упорядочение функций моей программы. Надеюсь, ты снова исправишь мою ошибку, спасибо большое.
  • 0
    В вашем вопросе не упоминались темы, а пользователь 3500089 не упомянул темы. Программа состоит только из одного потока, если вы не создаете дополнительные потоки в программном коде.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню