Общие сведения о размере структуры C ++

Рассмотрим следующий код:

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 байтов, но разница между объектами в массив.

Я думал, что выравнивание данных как-то связано с проблемой, но я все еще в тупике. Есть идеи, что на самом деле здесь происходит?

7
задан Gilad Naor 11 August 2011 в 08:56
поделиться