вместо 368, так что массив все еще выровнен по 16 байтов. (IIRC, x86-64 System V ABI, по крайней мере, рекомендует это для массивов с автоматическим хранением с размером> = 16 байт.)
ющий код
int main() {
int arr[120];
return arr[0];
}
Компилируется в это:
sub rsp, 360
mov eax, DWORD PTR [rsp-480]
add rsp, 360
ret
Зная, что целые числа составляют 4 байта, а размер массива - 120, массив должен занимать 480 байтов, но из ESP вычитается только 360 байтов ... Почему это так?