call stacks

Post on 22-Feb-2016

68 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Call Stacks. John Keyser. Stacks. A very basic data structure. Data structure: a container for holding data in a program. Classes, structs can be thought of as data structures The vector is a data structure we have already used. Like forming a stack of objects Two basic operations - PowerPoint PPT Presentation

TRANSCRIPT

Call Stacks

John Keyser

Stacks

• A very basic data structure.– Data structure: a container for holding data in a

program.– Classes, structs can be thought of as data structures– The vector is a data structure we have already used.

• Like forming a stack of objects• Two basic operations– Push (add something to top of stack)– Pop (remove whatever is on top of stack

Example:

• Push 5• Push 10• Pop• Push 8• Push 1• Pop• Pop• Pop 5

5

Example:

• Push 5• Push 10• Pop• Push 8• Push 1• Pop• Pop• Pop 5

10

10

Example:

• Push 5• Push 10• Pop• Push 8• Push 1• Pop• Pop• Pop 5

10

Example:

• Push 5• Push 10• Pop• Push 8• Push 1• Pop• Pop• Pop 5

8

8

Example:

• Push 5• Push 10• Pop• Push 8• Push 1• Pop• Pop• Pop 5

81

1

Example:

• Push 5• Push 10• Pop• Push 8• Push 1• Pop• Pop• Pop 5

108

1

Example:

• Push 5• Push 10• Pop• Push 8• Push 1• Pop• Pop• Pop 5

8

Example:

• Push 5• Push 10• Pop• Push 8• Push 1• Pop• Pop• Pop

5

Functions(aka routines, methods, etc.)

• When a function is called, it is pushed onto a call stack.– What is pushed on is a “function activation record”– This record contains the information/variables the function

uses (effectively the local scope• When a function finishes, it is popped off of the call

stack.– It might return a value to the prior item in the stack.

• The call stack can get very deep – many functions are called from one another

11Stroustrup/Programming -- Oct'10

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

A

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

AB

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

ABD

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

AB

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

ABE

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

ABEG

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

ABE

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

AB

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

A

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

AC

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

ACD

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

AC

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

ACF

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

AC

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

A

Example7 different functions (A through F)

int A() {… B(); C(); …}int B() {… D(); E(); …}int C() {… D(); F(); …}int D() {…}int E() {… G(); …}int F() {…}int G() {…}

main() {… A(); …}

Call Stack

top related