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.
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
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.
Trending now
This is a popular solution!
Step by step
Solved in 2 steps