Рассмотрим следующий код:
struct CExample {
int a;
}
int main(int argc, char* argv[]) {
CExample ce1;
CExample ce2;
cout << "Size:" << sizeof(ce1) << " Address: " << &ce1 << endl;
cout << "Size:" << sizeof(ce2) << " Address: " << &ce2 << endl;
CExample ceArr[2];
cout << "Size:" << sizeof(ceArr[0])<< " Address: "<< &ceArr[0] <<endl;
cout << "Size:" << sizeof(ceArr[1])<< " Address: "<< &ceArr[1] <<endl;
return 0;
}
Пример вывода:
ce1: Size = 4, адрес: 0039FAA0
ce2: Size = 4, адрес: 0039FA94
ceArr [0]: размер = 4, адрес: 0039FA84
ceArr [1]: Size = 4, Address: 0039FA88
С кодом между адресами первых двух объектов (ce1 и ce2) 12 байтов, но разница между объектами в массив.
Я думал, что выравнивание данных как-то связано с проблемой, но я все еще в тупике. Есть идеи, что на самом деле здесь происходит?