I seem to be subtracting 24 from by stack pointer for allocating a 5 byte buffer. If I'm not mistaken, shouldn't it only be subtracting 8 bytes from %esp?
Here is an example:

void funcx(int a) {
char buffer1[5];

disassembled object code
0x80483f0 <funcx>: push %ebp
0x80483f1 <funcx+1>: mov %esp,%ebp
0x80483f3 <funcx+3>: sub $0x18,%esp
0x80483f6 <funcx+6>: leave
0x80483f7 <funcx+7>: ret