Een call stack (ook wel control stack of run-time stack genoemd) is een datastructuur (een stack of stapel) die in het geheugen van een computer wordt bijgehouden tijdens de uitvoering van een programma.
De call stack wordt gebruikt om twee soorten gegevens op te slaan:
De call stack van een programma wordt bijgehouden door het programma zelf. De machinecode die hiervoor verantwoordelijk is wordt door de compiler tijdens de compilatie gegenereerd. De programmeur die een programma schrijft hoeft hier zelf geen rekening mee te houden.
Sommige assemblerinstructies manipuleren de call stack expliciet (bijvoorbeeld met POP en PUSH instructies) of impliciet (bijvoorbeeld CALL en RET, die het retouradres op de stack plaatsen en er weer afhalen).