Unformatted text preview:

inst eecs berkeley edu cs61c CS61C Machine Structures Lecture 5 Introduction to C pt 3 C Memory Management 2010 01 29 Lecturer SOE Dan Garcia www cs berkeley edu ddgarcia Apple s iPad day 2 After the dust has settled what do we have Name causes chuckles lawsuits Fujitsu Haters say nothing new closed system apple com ipad CS61C L05 Introduction to C pt 3 1 Garcia Spring 2010 UCB Review Pointers and arrays are virtually same C knows how to increment pointers C is an efficient language with little protection Array bounds not checked Variables not automatically initialized Beware The cost of efficiency is more overhead for the programmer C gives you a lot of extra rope but be careful not to hang yourself with it CS61C L05 Introduction to C pt 3 2 Garcia Spring 2010 UCB Pointers 1 4 review Sometimes you want to have a procedure increment a variable What gets printed void AddOne int x x x 1 y 5 int y 5 AddOne y printf y d n y CS61C L05 Introduction to C pt 3 3 Garcia Spring 2010 UCB Pointers 2 4 review Solved by passing in a pointer to our subroutine Now what gets printed void AddOne int p p p 1 y 6 int y 5 AddOne y printf y d n y CS61C L05 Introduction to C pt 3 4 Garcia Spring 2010 UCB Pointers 3 4 But what if what you want changed is a pointer What gets printed void IncrementPtr int p p 1 p int A 3 50 60 70 int q A IncrementPtr q printf q d n q CS61C L05 Introduction to C pt 3 5 q 50 Aq 50 60 70 Garcia Spring 2010 UCB Pointers 4 4 Solution Pass a pointer to a pointer declared as h Now what gets printed void IncrementPtr int h q 60 h h 1 q Aq int A 3 50 60 70 int q A IncrementPtr q printf q d n q CS61C L05 Introduction to C pt 3 6 50 60 70 Garcia Spring 2010 UCB Dynamic Memory Allocation 1 4 C has operator sizeof which gives size in bytes of type or variable Assume size of objects can be misleading and is bad style so use sizeof type Many years ago an int was 16 bits and programs were written with this assumption What is the size of integers now sizeof knows the size of arrays int ar 3 Or int ar 54 47 99 sizeof ar 12 as well for arrays whose size is determined at run time int n 3 int ar n Or int ar fun that returns 3 sizeof ar 12 CS61C L05 Introduction to C pt 3 7 Garcia Spring 2010 UCB Dynamic Memory Allocation 2 4 To allocate room for something new to point to use malloc with the help of a typecast and sizeof ptr int malloc sizeof int Now ptr points to a space somewhere in memory of size sizeof int in bytes int simply tells the compiler what will go into that space called a typecast malloc is almost never used for 1 var ptr int malloc n sizeof int This allocates an array of n integers CS61C L05 Introduction to C pt 3 8 Garcia Spring 2010 UCB Dynamic Memory Allocation 3 4 Once malloc is called the memory location contains garbage so don t use it until you ve set its value After dynamically allocating space we must dynamically free it free ptr Use this command to clean up Even though the program frees all memory on exit or when main returns don t be lazy You never know when your main will get transformed into a subroutine CS61C L05 Introduction to C pt 3 9 Garcia Spring 2010 UCB Dynamic Memory Allocation 4 4 The following two things will cause your program to crash or behave strangely later on and cause VERY VERY hard to figure out bugs free ing the same piece of memory twice calling free on something you didn t get back from malloc The runtime does not check for these mistakes Memory allocation is so performance critical that there just isn t time to do this The usual result is that you corrupt the memory allocator s internal structure You won t find out until much later on in a totally unrelated part of your code CS61C L05 Introduction to C pt 3 10 Garcia Spring 2010 UCB Arrays not implemented as you d think void int int p q foo p q x a 4 int malloc sizeof int x p 1 p 0 would also work here printf p u p u p u n p p p q 2 q 0 would also work here printf q u q u q u n q q q a 3 a 0 would also work here printf a u a u a u n a a a 0 4 12 16 20 24 28 32 36 40 44 48 52 56 60 8 2 3 20 40 p q x 24 a 1 unnamed malloc space p 1 p 40 p 12 q 2 q 20 q 16 a 3 a 24 a 24 K R An array name is not a variable CS61C L05 Introduction to C pt 3 11 Garcia Spring 2010 UCB Binky Pointer Video thanks to NP SU CS61C L05 Introduction to C pt 3 12 Garcia Spring 2010 UCB Kilo Mega Giga Tera Peta Exa Zetta Yotta 1 Kid meets giant Texas people exercising zen like yoga Rolf O 2 Kind men give ten percent extra zestfully youthfully Hava E 3 Kissing Mentors Gives Testy Persistent Extremists Zealous Youthfulness Gary M 4 Kindness means giving teaching permeating excess zeal yourself Hava E 5 Killing messengers gives terrible people exactly zero yo 6 Kindergarten means giving teachers perfect examples of zeal youth 7 Kissing mediocre girls guys teaches people to expect zero from you 8 Kinky Mean Girls Teach Penis Extending Zen Yoga 9 Kissing Mel Gibson Tom Petty exclaimed Zesty yo Dan G 10 Kissing me gives ten percent extra zeal youth Dan G borrowing parts CS61C L05 Introduction to C pt 3 13 Garcia Spring 2010 UCB Peer Instruction Which are guaranteed to print out 5 I main int a ptr int malloc int a ptr 5 printf d a ptr II main int p a 5 p a code a p NEVER on LEFT of printf d a I II a b YES c YES d YES YES e No idea CS61C L05 Introduction to C pt 3 14 Garcia Spring 2010 UCB And in Conclusion Use handles to change pointers Create abstractions with structures Dynamically allocated heap memory must be manually deallocated in C Use malloc and free to allocate and deallocate memory from heap CS61C L05 Introduction to C pt 3 15 Garcia Spring 2010 UCB Reference slides You ARE responsible for the material on these slides they re just taken from the reading anyway we ve moved them to the end and off stage to give more breathing room to lecture CS61C L05 Introduction to C pt …


View Full Document

Berkeley COMPSCI 61C - Introduction to C

Documents in this Course
SIMD II

SIMD II

8 pages

Midterm

Midterm

7 pages

Lecture 7

Lecture 7

31 pages

Caches

Caches

7 pages

Lecture 9

Lecture 9

24 pages

Lecture 1

Lecture 1

28 pages

Lecture 2

Lecture 2

25 pages

VM II

VM II

4 pages

Midterm

Midterm

10 pages

Load more
Loading Unlocking...
Login

Join to view Introduction to C and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Introduction to C and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?