У меня есть класс, который я буду буквально создавать экземпляры миллиарды. Я сделал все возможное, чтобы поместить в него как можно меньше данных, и уменьшил его до 10 байт при компиляции для архитектуры x64: unsigned short int
и size_t
, Когда я наведите курсор мыши sizeof(myclass)
(в VS), однако, он сообщает 16 байтов. Если я закомментирую одно из полей, размер класса будет таким, как вы ожидаете, 10 байтов и 2 байта соответственно.
Есть ли способ указать компилятору использовать только 10 байтов для моего класса?
#pragma pack
может сделать ваши структуры меньше. С другой стороны, это может сделать получение данных элемента более медленным, поскольку выравнивание байтов не гарантируется. В результате компилятору потребуются дополнительные инструкции для извлечения данных из разных мест памяти. Для получения дополнительной информации, эта ссылка имеет отличный пост: #pragma pack effect
Других решений пока нет …