Распределение памяти в функции C++

202
05 декабря 2017, 21:16

Имеется такая функция

void func(){
    int a = 999999;
    int b = 999988;
    int c = 999977;
    int d = 999966;
    int arr[100];
    int *y = &arr[0];
    for (int i=0; i<100; i++){
        arr[i] = 111111;
    }

    for (int i=0; i<115; i++){
        cout.width(10);
        cout<<*(y+i)<<" "<<(y+i)<<endl;
    }   

}

Она выводит массив и сделующие за ним ячейки памяти, элементы массива идут друг за другом, это естественно. После них 2 ячейки, то есть 8 байт остаются пустыми и идут следующие 4 переменные (a,b,c,d). Если удалить одну перепенную и оставить (a,b,c), то это расстояние увеличиваеся до 3 ячеек, то есть 12 байт, а если оставить одну переменную (a), то это расстояние увеличится до 5 ячеек и соотственно 40 байт. У меня вопрос, почему так распределяется память? От чего это зависит? У меня операционка Windows 10 (64bit). Предполагаяю, что 8 байт уходят на указатель, но куда уходят остальные непонятно.

READ ALSO
побитовое исключене в C++ (bitwise XOR)

побитовое исключене в C++ (bitwise XOR)

у меня в коде есть такая строка temp3(k,j)^=temp3(i,j); temp3 это матрица типа doubleпри компиляции выводится такая ошибка

191
Как изменить фон у QWidget?

Как изменить фон у QWidget?

Здравствуйте, у меня есть такой код:

177
c++ get-запрос, узнать инфо на сайте [дубликат]

c++ get-запрос, узнать инфо на сайте [дубликат]

На данный вопрос уже ответили:

213
Инициализация сервера

Инициализация сервера

Всем привет, продолжая изучать javaEE (servlets) столкнулся с проблемойИспользую куки, хранящие какую локаль использовать юзеру

190