{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

10 Dynamic Memory

# 10 Dynamic Memory - "\$ CMSC 216 Introduction to Computer...

This preview shows pages 1–5. Sign up to view the full content.

!"#"\$\$ \$ CMSC 216 Introduction to Computer Systems Lecture 10 Pointers, cont. and Make Jan Plane & Pete Keleher {jplane, als}@cs.umd.edu Administrivia Project 1 grades out now Project 2– questions --- due tonight Quiz next Monday – (I know this is the next class meeting after the exam) Exam #1 Thursday, in lecture – covers everything through last week (Makefiles) CMSC 216 - Wood, Sussman, Herman, Plane 2

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
!"#"\$\$ & D YNAMIC M EMORY A LLOCATION ( CONT .) Chapter 11, Reek CMSC 216 - Wood, Sussman, Herman, Plane 3 Pointer aliases We can have two pointers pointing to the same address Remember freeing the space doesn’t change the value of the pointer or the value of the space pointed at int *p, *q; p = malloc(sizeof(int)); *p = 99; q = p; /*values of p and q and *p and *q*/ free(p); p = NULL; *q = 42; q is called a dangling pointer CMSC 216 - Wood, Sussman, Herman, Plane 4
!"#"\$\$ ! Common errors Dereferencing pointers to freed space (directly or indirectly) Forgetting to check the return value from malloc() for NULL Not initializing the memory malloc() returns Not allocating enough space: char string[] = "Inconceivable!"; char *p = malloc(strlen(string)); strcpy(p, string); /* Oops... */ CMSC 216 - Wood, Sussman, Herman, Plane 5 Common errors, cont. Attempting to free non-heap memory: int i, *p; p = &i; free(p); /* ??? Undefined operation */ Freeing something that's not the beginning of a dynamically allocated block: int *p = calloc(10, sizeof(int)); free(p + 3); CMSC 216 - Wood, Sussman, Herman, Plane 6

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
!"#"\$\$
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}