Exclude any existing source code files that may already be in your IDE project and add a new one named C2A1E5_ResizeAlloc.c. Also add instructor-supplied source code file C2A1E5_main-Driver.c. Do not write a main function! main already exists in the instructor-supplied file and it will use the code you write. File C2A1E5_ResizeAlloc.c (I used 8 lines of code but you don’t have to match or beat that.) must contain the definition of a function named ResizeAlloc that returns type “pointer to void” and has three parameters. The first is named pOld and is of type “pointer to void” while the second and third are named newSize and oldSize, respectively, and are both of type size_t. ResizeAlloc either dynamically allocates an entirely new block of memory containing newSize bytes or, in effect, resizes an existing block in pOld containing oldSize bytes to contain newSize bytes. When resizing occurs all existing data that will fit into newSize bytes will be preserved. ResizeAlloc may not call calloc or realloc or any function or macro that you know does call them.

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Exclude any existing source code files that may already be in your IDE project and add a new one
named C2A1E5_ResizeAlloc.c. Also add instructor-supplied source code file C2A1E5_main-Driver.c. Do
not write a main function!
main already exists in the instructor-supplied file and it will use the code you
write.


File C2A1E5_ResizeAlloc.c (I used 8 lines of code but you don’t have to match or beat that.)
must contain the definition of a function named ResizeAlloc that returns type “pointer to void
and has three parameters. The first is named pOld and is of type “pointer to void” while the second
and third are named newSize and oldSize, respectively, and are both of type size_t.

ResizeAlloc either dynamically allocates an entirely new block of memory containing newSize
bytes or, in effect, resizes an existing block in pOld containing oldSize bytes to contain newSize
bytes. When resizing occurs all existing data that will fit into newSize bytes will be preserved.
ResizeAlloc may not call calloc or realloc or any function or macro that you know does call
them.

I recommend implementing the following simple algorithm unless you can devise a better one:

   If newSize is zero
         return a null pointer.
   Else
         Dynamically allocate a new block containing newSize uninitialized bytes.
          If the allocation fails
              return a null pointer.
          Else If pOld is a null pointer
              return a pointer to the new block.
          Else
                If newSize is greater than oldSize
                        copy oldSize bytes from pOld to the new block.
                 Else
                        copy newSize bytes from pOld to the new block.
                 Free pOld.
                 Return a pointer to the new block.

 

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Graphical User Interface
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education