60 likes | 75 Views
Learn the importance of runtime stack for C, memory division, comparing stack and heap, and variable storage. Includes code example and memory layout explanation.
E N D
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 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 Hanoi; 1 3 2 2 Activation record for Hanoi; 1 2 3 3 Activation record for Hanoi; 1 3 2 4 Activation Record for Main Activation record for main