AFAIK the stack must be 16 byte aligned for function calls but I have no clue as to why 24 bytes were allocated and not only 16.
There are some questions about this on SO already. Why does GCC 6 assume data is 16-byte aligned?
and on GCCs bugzilla
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40838