выделение памяти в стеке больше при разборе кода - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть следующий код. Я ожидал, что размер стека в основной функции составит 8 байт в 64-битной системе, но при разборке я вижу странную вещь: это 16. Я использую https://godbolt.org/ x86-64 G CC 9.3. Итак, мой вопрос почему?

#include <memory>

struct my_struct {
    char a[10];
    int b;
    char c;
    short d;
};

int main() {
    struct my_struct* s = (struct my_struct*)malloc(sizeof(struct my_struct));

    printf("%lu\n", sizeof(s));
    return 0;
}
.LC0:
        .string "%lu\n"
main:
        push    rbp
        mov     rbp, rsp
        sub     rsp, 16
        mov     edi, 20
        call    malloc
        mov     QWORD PTR [rbp-8], rax
        mov     esi, 8
        mov     edi, OFFSET FLAT:.LC0
        mov     eax, 0
        call    printf
        mov     eax, 0
        leave
        ret
...