diff --git a/education/software development/ECE1400/Chapter 17 Exercises.md b/education/software development/ECE1400/Chapter 17 Exercises.md index bce3cde..9f71533 100644 --- a/education/software development/ECE1400/Chapter 17 Exercises.md +++ b/education/software development/ECE1400/Chapter 17 Exercises.md @@ -1,18 +1,8 @@ -> **1.** Having to check the return function of `malloc` (or any other memory allocation function) each time we call it can be an annoyance. Write a function named `my_malloc` that serves as a "wrapper" for `malloc`. When we call `my_malloc` and ask it to allocate `n` bytes, it in turn calls `malloc`, tests to make sure that `malloc` doesn't return a null pointer, then returns the pointer from `malloc`. Have `my_malloc` print an error message and terminate the program if `malloc` returns a null pointer. - +> **4.** Suppose that the following declarations are in effect: ```c -void *my_malloc(size_t n) { - void *p = malloc(n); - if (p == NULL) { - printf("Failed to allocate memory"); - exit(EXIT_FAILURE); - } - return p; -} +struct point {int x, y; }; +struct rectangle { struct point upper_left, lower_right; }; +struct rectangle *p; ``` - ---- - -> **2.** - +> Assume that we want `p` to point to a rectangle structure whose upper left corner is at $(10, 25)$, and whose lower right corner is at $(20, 15)$. Write a series of statements that allocate such a structure and initialize it as indicated.