Кто-нибудь может объяснить, что происходит?
Мой MSVC 2008 Проект выравнивание элементов структуры Установлено 16 байт (/Zp16) выравнивание, однако одна из следующих структур выравнивается по 16 байтов , а другая выравнивается только по 8 байтов ... ПОЧЕМУ? !!!
struct HashData
{
void *pData;
const char* pName;
int crc;
bool bModified;
}; // sizeof (HashData) == 4 + 4 + 4 + 1 + padding = 16 bytes, ok
class StringHash
{
HashData data[1024];
int mask;
int size;
}; // sizeof(StringHash) == 1024 * 16 + 4 + 4 + 0 = 16392 bytes, why not 16400 bytes?
Это может показаться не таким уж большим делом, но для меня это большая проблема, так как я вынужден эмулировать выравнивание структур MSVC в GCC и указание выровненного (16) атрибута делает sizeof (StringHash) == 16400 !
Скажите, пожалуйста, когда и почему MSVC переопределяет настройку / Zp16 , я абсолютно не могу ее понять ...