Put simply, the red zone is an optimization. In particular, leaf functions may use this area for their entire stack frame, rather than adjusting the stack pointer in the prologue and epilogue. Therefore, functions may use this area for temporary data that is not needed across function calls. The 128-byte area beyond the location pointed to by %rsp is considered to be reserved and shall not be modified by signal or interrupt handlers. First I'll quote the formal definition from the AMD64 ABI: