Q1: How many total calls to malloc are made during createEmployee (including readEmployee and anything it calls)? Q2: If the employee's name is Joe Smith, how much total memory is allocated for the structure and the name (not just for the name)? Q3: Many people put the SSN in a char[9] field (I kind of encouraged it). Is that big enough to hold the ssn string? Why didn't it create a problem? Q4: How many calls to free do you need to make? Does it agree with the number of calls to malloc that were made? Q5: What would happen if you passed in the address of the initialized global variable into releaseEmployee? Would anything different happen if you passed in the address of a local variable (on the stack)?

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question
100%

//below is the code I need help with answering the questions in the image//

 

 

#include <stdio.h>

#include <stdlib.h>

struct employees

{

    char name[20];

    int ssn[9];

    int yearBorn, salary;

};

 

// function to read the employee data from the user

void readEmployee(struct employees *emp)

{

    printf("Enter name: ");

    gets(emp->name);

    printf("Enter ssn: ");

    for (int i = 0; i < 9; i++)

        scanf("%d", &emp->ssn[i]);

    printf("Enter birth year: ");

    scanf("%d", &emp->yearBorn);

    printf("Enter salary: ");

    scanf("%d", &emp->salary);

}

 

// function to create a pointer of employee type

struct employees *createEmployee()

{

    // creating the pointer

    struct employees *emp = malloc(sizeof(struct employees));

    // function to read the data

    readEmployee(emp);

    // returning the data

    return emp;

}

 

// function to print the employee data to console

void display(struct employees *e)

{

    printf("%s", e->name);

    printf("  %d%d%d-%d%d-%d%d%d%d", e->ssn[0], e->ssn[1], e->ssn[2], e->ssn[3], e->ssn[4], e->ssn[5], e->ssn[6], e->ssn[7], e->ssn[8]);

    printf("  %d", e->yearBorn);

    printf("\n$%d.", e->salary);

}

 

// function to free the memory of the employee pointer

void releaseEmployee(struct employees *e)

{

    free(e);

}

 

// main method

int main()

{

    // creating the employee

    struct employees *emp = createEmployee();

    // printing the information

    display(emp);

    // free the memory

    releaseEmployee(emp);

    return 0;

}

Q1: How many total calls to malloc are made during createEmployee (including
readEmployee and anything it calls)?
Q2: If the employee's name is Joe Smith, how much total memory is allocated
for the structure and the name (not just for the name)?
Q3: Many people put the SSN in a char[9] field (I kind of encouraged it). Is that
big enough to hold the ssn string? Why didn't it create a problem?
Q4: How many calls to free do you need to make? Does it agree with the number
of calls to malloc that were made?
Q5: What would happen if you passed in the address of the initialized global
variable into releaseEmployee? Would anything different happen if you passed in
the address of a local variable (on the stack)?
Transcribed Image Text:Q1: How many total calls to malloc are made during createEmployee (including readEmployee and anything it calls)? Q2: If the employee's name is Joe Smith, how much total memory is allocated for the structure and the name (not just for the name)? Q3: Many people put the SSN in a char[9] field (I kind of encouraged it). Is that big enough to hold the ssn string? Why didn't it create a problem? Q4: How many calls to free do you need to make? Does it agree with the number of calls to malloc that were made? Q5: What would happen if you passed in the address of the initialized global variable into releaseEmployee? Would anything different happen if you passed in the address of a local variable (on the stack)?
Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY