0 голосов
спросил от в категории C
Чтобы добавить к тому, что сказал OriginalGriff. Хотя переменная a будет выделена как 4 байта, она была объявлена ​​как тип char . А поскольку char - только один байт, компилятор возвращает свой размер как 1.

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
0 голосов
ответил от
При распределении памяти он должен быть распределен в нескольких единицах разумного размера: блок системной памяти. Для 32- или 64-разрядной системы, которая имеет тенденцию быть 32 бита или 4 байта, потому что это размер выборки/регистрации памяти. Если вы выделяете одиночные байты, то это дает вам проблемы со следующим распределением, которое вы делаете, поскольку это может быть частично в одной выборке и частично в другой.
Таким образом, когда вы используете литерал символа типа «b», его нужно хранить в вашей скомпилированной программе где-то, и он хранится в виде целого числа - занимает целую часть системной памяти - чтобы было проще для каждого вещь. Поэтому, когда вы читаете размер, вы получаете больше, чем вы рассчитывали!

В принципе, не беспокойтесь об этом - это не то, что вам нужно сделать в «реальном мире».

Категории

Добро пожаловать на сайт DraftingCode Q&A (ИТ ответы), где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...