Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CSE240 Lecture 11

CSE240 Lecture 11

Introduction to Programming Languages
malloc and free
(202202)

Javier Gonzalez-Sanchez
PRO

January 11, 2017
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. jgs
    CSE 240
    Introduction to Programming Languages
    Lecture 11: malloc and free
    Dr. Javier Gonzalez-Sanchez
    [email protected]
    javiergs.engineering.asu.edu | javiergs.com
    PERALTA 230U
    Office Hours: By appointment

    View Slide

  2. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 2
    jgs
    Announcement
    § Homework 02
    Programming with C

    View Slide

  3. jgs
    malloc and free

    View Slide

  4. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 4
    jgs
    malloc
    #include
    #include
    int main(){
    int x = 5;
    int *y = (int*) malloc (sizeof(int));
    *y = 7;
    printf("value of y: %d \n", *y);
    printf("address of y: %p \n", y);
    printf("address of y: %p \n", &y);
    printf("value of x: %d \n", x);
    printf("address of x: %p \n", &x);
    free(y);
    return 0;
    }
    7
    0x1c
    0x1c
    y
    0x78
    5
    x
    0x74

    View Slide

  5. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 5
    jgs
    malloc and arrays
    #include
    #include
    int main(){
    int x = 5;
    int *y = (int*) malloc (sizeof(int) * 3);
    *(y+0) = 1;
    y[1] = 5;
    *(y+2) = 7;
    printf("value of y[0]: %d \n", y[0]);
    printf("value of y[1]: %d \n", y[1]);
    printf("value of y[2]: %d \n", y[2]);
    free(y);
    return 0;
    }
    1
    0x1c
    0x1c
    y
    0x78
    5 7

    View Slide

  6. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 6
    jgs
    malloc and 2D arrays
    #include
    #include
    int main(){
    int **array = (int**) malloc (sizeof(int*) * 3);
    *(array+0) = (int*) malloc (sizeof(int ) * 3);
    array[1] = (int*) malloc (sizeof(int ) * 3);
    *(array+2) = (int*) malloc (sizeof(int ) * 3);
    array[0][0] = 1;
    array[1][1] = 1;
    array[2][2] = 1;
    *(*(array +1 ) + 2) = 3; // this is array[1][2]
    printf ("array [1][2] is %d \n", array[1][2]);
    printf ("array [2][2] is %d \n", *(*(array+2)+2) );
    // free (s) go here
    return 0;
    }

    View Slide

  7. jgs
    Test Yourselves

    View Slide

  8. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 8
    jgs
    Dynamic 2D Array

    View Slide

  9. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 9
    jgs
    Dynamic 2D Array

    View Slide

  10. Javier Gonzalez-Sanchez | CSE240 | Spring 2018 | 10
    jgs
    Questions

    View Slide

  11. jgs
    CSE 240 Introduction to Programming Languages
    Javier Gonzalez-Sanchez, Ph.D.
    [email protected]
    Fall 2021
    Copyright. These slides can only be used as study material for the class CSE240 at Arizona State University.
    They cannot be distributed or used for another purpose.

    View Slide