Вставляю код
struct Person
{
int n; char name[10];
} p;
Потом узнаю размер структуры. sizeof(p); после чего результат - 16. Почему так? Сколько char же занимает 1 байт, 10 сhar занимают 10 байт. int же занимает 4 байта, а структура 1 байт? Откуда ещё 1 байт?
Ответ прост - выравнивание. Компилятор выравнивает в памяти поля структуры так, чтобы обеспечить максимальное быстродействие (или обеспечить выполнение затребованного ключами компилятора выравнивания :))
Вот такой код (VC++ 2015)
#include <iostream>
#include <iomanip>
using namespace std;
#pragma pack(8)
struct Person1
{
int n; char name[10];
} p1;
#pragma pack(1)
struct Person2
{
int n; char name[10];
} p2;
int main()
{
cout << sizeof(p1) << endl;
cout << sizeof(p2) << endl;
}
А вот его вывод:
16
14
Хотя структуры функционально одинаковы, выравнивание применено разное...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я решил скомпилировать программу obs-studio (я использовал clion), но при сборке cmake-а возникает ошибка:
Если str английская, вроде все нормальноА вот на русском не находит окно:
В общем, есть div с произвольным количеством дочерних div-овНужно реализовать выбор/мультивыбор дочерних div (на подобии выбора файлов в проводнике)