Resizing Memory
Resizing Memory
- Resizing memory in C is typically done using the
reallocfunction, which is used to change the size of an already allocated memory block.
Things to be considered using realloc:
It's important to note that
reallocmay move the memory block to a different location if necessary.If this happens, any pointers to the original memory block become invalid, so we need to make sure to update any pointers to the new memory location.
-It's also important to properly manage dynamically allocated memory to avoid memory leaks. Always make sure to deallocate memory using the free function when it's no longer needed.
Example
#include <stdio.h>
#include <stdlib.h>
int main() {
// Allocate memory for an array of 5 integers
int* dynamicArray = malloc(5 * sizeof(int));
if (dynamicArray == NULL) {
printf("Failed to allocate memory.\n");
return 1; // Error handling
}
// Use the dynamically allocated memory
// Resize the array to 10 integers
dynamicArray = realloc(dynamicArray, 10 * sizeof(int));
if (dynamicArray == NULL) {
printf("Failed to reallocate memory.\n");
return 1; // Error handling
}
// Use the resized memory block
// Deallocate the memory when done
free(dynamicArray);
return 0;
}
Explanation:
- Here, we first allocate memory for an array of 5 integers using the
mallocfunction. - Then, we use the
reallocfunction to resize the memory block to an array of 10 integers. - If the reallocation is successful, the pointer returned by
reallocpoints to the beginning of the new memory block. - If it fails, it returns
NULL, in which case we need to handle the error.