Presentation is loading. Please wait.

Presentation is loading. Please wait.

Dynamically Allocated Memory String CGS 3460, Lecture 33 Apr 3, 2006 Hen-I Yang.

Similar presentations


Presentation on theme: "Dynamically Allocated Memory String CGS 3460, Lecture 33 Apr 3, 2006 Hen-I Yang."— Presentation transcript:

1 Dynamically Allocated Memory String CGS 3460, Lecture 33 Apr 3, 2006 Hen-I Yang

2 Previously… Dynamic Memory Allocation Dynamic Allocated Arrays

3 Agenda Dynamic Allocated Arrays Dynamic Allocated Strings Deallocation Strings

4 Malloc an Array int *a; a = malloc(n * sizeof(int)); Can we just say a = malloc(n* 4) ? Not a good idea After malloc, you have all the space needed for the array allocated After that, you can use a[i] or *(a+i) to access the elements

5 Calloc an Array int *a; A = calloc(n, sizeof(int)); Why do we use calloc? All elements are initialized to 0 at the time of allocation

6 Realloc an Array int *a; a = malloc(n * sizeof(int)); a = realloc(a, m * sizeof(int)); Why do we use realloc? So we can change its size after we malloc or calloc If first argument is null, realloc = malloc If second argument is zero, the memory is freed

7 Strings In C, strings are equivalent to a collection (array) of characters How do we setup a string?  char quarterback[] = “Palmer”;  7 bytes are allocate for variable name.  What if Mannings replaced Palmer as QB?  char director[9];  Let’s say, a guy named Roethlisberger comes along.  char * quarterback; quarterback = (char *) malloc (15);

8 How do we use malloc with strings? char * temp_buffer = (char *) malloc(20); char * name; char * title; scanf(“%s”, temp_buffer); name = (char *) malloc(strlen(temp_buffer)); strcpy(name, temp_buffer); strcpy(temp_buffer, “□ □ □ □ … □”); □ x 20 scanf(“%s”, temp_buffer); title = (char *) malloc(strlen(temp_buffer)); strcpy(title, temp_buffer);

9 Array of strings If there are multiple strings, we can use a 2 dimensional array to store it. But it waste too much space, instead we store an array of pointers to strings char * strings[NUMBER_OF_STRINGS]; strings[0], strings[1], …

10 Recycle Memory leak Free p = malloc(…); free(p); Calling free to a memory location, not previously allocated dynamically (e.g. an element of array, a variable) can have unpredictable effect Dangling pointer: refer to the pointer pointing to an address that is already freed Some programmers put p = null; whenever they free the memory p points to.

11 Strings String: an array of characters String constant (String literals) String variable

12 Summary Dynamic Allocated Arrays Dynamic Allocated Strings Deallocation Strings

13 Before you go Nothing for today. Enjoy your plan for tonight.


Download ppt "Dynamically Allocated Memory String CGS 3460, Lecture 33 Apr 3, 2006 Hen-I Yang."

Similar presentations


Ads by Google