мета-данные страницы
Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| c:c_ultimate_guide:memory [2025/10/25 16:07] – создано radi0dev | c:c_ultimate_guide:memory [2025/11/09 12:07] (текущий) – внешнее изменение A User Not Logged in | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== выравнивание и поля в памяти ====== | ====== выравнивание и поля в памяти ====== | ||
| + | https:// | ||
| + | ===== выравнивание в структурах ===== | ||
| + | |||
| + | Поля структуры появляются в памяти в том же порядке, | ||
| + | |||
| + | Выравнивание указывает, | ||
| + | |||
| + | <code c> | ||
| + | #include < | ||
| + | |||
| + | struct person { | ||
| + | int age; | ||
| + | char* name; | ||
| + | }; | ||
| + | |||
| + | int main(void){ | ||
| + | struct person tom = {.age = 40, .name =" | ||
| + | // получаем размер структуры person | ||
| + | printf(" | ||
| + | // получаем адрес переменной tom | ||
| + | printf(" | ||
| + | // получаем адрес поля age в переменной tom | ||
| + | printf(" | ||
| + | // получаем адрес поля name в переменной tom | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Выравнивание структуры ===== | ||
| + | |||
| + | Согласно System V ABI, размер структуры должен быть кратен его выравниванию. ABI также утверждает, | ||
| + | |||
| + | ===== Выравнивание массивов ===== | ||
| + | |||
| + | Если поле представляет массив, | ||