Регистрация использования - и, технически, даже наличие регистров вообще - является характеристикой реализации C и аппаратного обеспечения, на котором она выполняется. Поэтому нет окончательного ответа на ваш вопрос на уровне общности. Это в основном относится к любому вопросу о том, «что происходит под капотом».
Говоря с точки зрения типичных реализаций товарного оборудования, хотя,
Мое понимание: Когда я использую calloc Я выделяющий раздел памяти в байтах.
Разумная характеристика.
Переменные хранятся в регистрах размером 32 бита (или 4 байта).
Номер Значения хранятся в регистрах. Реализации обычно обеспечивают хранение значений переменных в обычной памяти, хотя эти значения могут быть скопированы в регистры для вычисления.
В некоторых случаях, связанных с конкретными конкретными конкретными условиями, некоторые переменные могут не иметь связанной ячейки памяти, а их значения сохраняются только в регистрах. Вообще говоря, однако, это never случай для переменных или выделенного пространства, которое было, было или когда-либо могло быть ссылкой указателем.
В моей программе я пишу символы, используя мой указатель (т. Е. * Ptr = '!';), А затем увеличиваю точки (ptr ++;), чтобы перейти к следующему регистру.
Нет, абсолютно нет. Приращение указателя заставляет его указывать на следующий элемент вашего динамического хранилища, измеренный в единицах размера заостренного типа. Это не имеет ничего общего с регистрами. Запись на объект, указывающий на объект, вероятно, связана с использованием регистров (потому что так работают ЦП), но в конечном итоге написанный символ заканчивается в обычной памяти.
Мой вопрос: Если регистры 32-бит, и я пишу только 8 бит в этот регистр, являются остальные 24-бит не используется?
Как я уже объяснил, этот вопрос основан на заблуждении. Цель вашей записи не является регистром. В любом случае между элементами, которые вы пишете, нет пробелов в памяти.
Возможно, что в некоторых случаях умный компилятор может оптимизировать ваш код для минимизации записи в память путем сбора байтов в регистре и выполнения записи в кусках такого размера. Может ли это или будет сделано, зависит от реализации и действующих вариантов.
Если нет, то являются указателями, которые я использую, указывая на какое-то 8-разрядное распределение поддисков, указывая на 8-битные разделы регистров?
Ваши указатели (логически) указывают на основную память, которая (логически) адресуется в единицах размера байта. Они не указывают на регистрацию.
Под «регистрами» вы подразумеваете «ячейки памяти»? –
Вы пишете _Variables хранятся в регистрах размером 32 бита (или 4 байта) ._ Неверно, это скорее _Variables ** может быть ** сохранено в регистрах размером 32 бита (или 4 байта) ._ –
«Если регистры 32-битные и я пишу только 8 бит в этот регистр, остальные 24 бита не используются? " является проблемой сборки и не указывается и не контролируется C. Существует множество возможностей. С точки зрения C, это не имеет значения. – chux