Распределение памяти объектов С ++ - PullRequest
1 голос
/ 03 июля 2019

У меня есть следующий код

class Rect
{
public:
    int width = 10;
    int height = 20;
};
int _tmain(int argc, _TCHAR* argv[])
{
    Rect  rect;
    Rect rects;
    //rect = rects;

    cout << sizeof(Rect) << endl;   // prints 8 which is fine

    cout << &rect.width << "\t"  << &rect.height << endl;   // prints 0027FEC8  0027FECC
    cout << &rects.width << "\t" << &rects.height << endl;  // prints 0027FEB8  0027FEBC

Мой вопрос: почему всегда существует разница в два раза между адресами двух объектов? Например, 0027FEC8 - 0027FEB8 - 16. Когда я добавляю другую переменную-член типа int, разница составляет 24 и так далее ...

Может ли кто-нибудь объяснить, почему существует разница в адресе, в два раза превышающем размер класса (который составляет 8 байт). Я надеялся увидеть ширину переменной члена второго объекта по адресу 0027FEC0, но это на 12 байт вперед, как и адрес переменных высоты второго объекта. Это почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...