I've been reading up on the x86 stack and the CDECL convention and read something that confused me.
Among the caller's responsibilities listed were popping the parameters, using them or simply incrementing %esp to remove them.
How does that last part work?
For example, say the initial value of %esp is 0x105000 and you decrement it by $0x1c for your current stack frame. You allocate some data, then increment it back - in that case wouldn't that data still float around in memory? How is the memory cleared? Would accessing 0x104FF4 lead to a segmentation fault and if so, what cleared the data there?