Program Compilation and Execution
Today’s Objectives Explain why runtime stack needed for C Draw logical division of memory into stack, heap Compare and contrast stack and heap List variables stored in heap; stack; neither
Logical Memory Layout Stack Heap Static Space D Y N A M I C Currently not in use Currently not in use Heap Static Space
Dice.c int NUM = 100000; main() { int i, roll, *counts; counts = (int *) malloc (13 * sizeof(int)); for (i = 0; i < 13; i++) counts[i] = 0; for ( i = 0; i < NUM; i++) roll = rand() % 6 + rand() %6 + 2 counts[roll]++; for (i = 2; i < 13; i++) printf(“There were %d rolls of %d\n”, counts[i],i); }
Where Are the Variables? Stack D Y N A M I C i; roll; counts Currently not in use Currently not in use Space for 13 ints – pointed to by counts Heap Num “There were %d rolls of %d\n” Static Space
Runtime Stack Activation record for Hanoi; 1 2 3 1 Activation Record for Main Activation record for main