C realloc function

realloc is used to resize a previously allocated memory block. You can increase or decrease the size of the block. If the block needs to be expanded, realloc may move the memory to a new location and copy the old data to the new location.

Syntax:


void* realloc(void* ptr, size_t new_size);

Explanation:

ptr: A pointer to the memory block previously allocated (either by malloc or calloc).

new_size: The new size in bytes.

Returns a pointer to the newly allocated memory, or NULL if the reallocation fails.

Example:


arr = (int*) realloc(arr, 5 * sizeof(int));  // Resize the array to hold 5integers

If arr was previously pointing to a block of 10 integers, this call resizes it to 5 integers. If the reallocation fails, realloc returns NULL.

Complete Example:


#include <stdio.h>
#include <stdlib.h>

int main() {
    // Step 1: Allocate memory for an array of 5 integers using malloc
    int* arr = (int*) malloc(10 * sizeof(int));
    if (arr == NULL) {
        printf("Memory allocation failed!\n");
        return 1;
    }

    // Step 2: Initialize the array
    for (int i = 0; i < 10; i++) {
        arr[i] = i * 10;  // Fill array with some values
    }

    // Step 3: Print the array
    printf("Array values (after malloc): ");
    for (int i = 0; i < 10; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    // Step 4: Reallocate the array to hold 10 integers
    arr = (int*) realloc(arr, 20 * sizeof(int));
    if (arr == NULL) {
        printf("Reallocation failed!\n");
        return 1;
    }

    // Step 5: Initialize the new elements
    for (int i = 10; i < 20; i++) {
        arr[i] = i * 10;  // Fill new elements with values
    }

    // Step 6: Print the updated array
    printf("Array values (after realloc): ");
    for (int i = 0; i < 20; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

Output:

Array values (after malloc): 0 10 20 30 40 50 60 70 80 90
Array values (after realloc): 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190

C realloc function – Interview Questions

Q 1: What does realloc() do?
Ans: Resizes previously allocated memory.
Q 2: Can realloc() change memory location?
Ans: Yes, if sufficient space is not available.
Q 3: What happens if realloc() fails?
Ans: It returns NULL and original memory remains unchanged.
Q 4: Can realloc() be used with NULL pointer?
Ans: Yes, it behaves like malloc().
Q 5: Why is realloc() useful?
Ans: To increase or decrease memory dynamically.

C realloc function – Objective Questions (MCQs)

Q1. What does the realloc() function do?






Q2. What is the syntax of realloc()?






Q3. What happens if realloc() fails to allocate memory?






Q4. If realloc() returns NULL, what happens to the original pointer?






Q5. Which header file contains the declaration of realloc()?






Related C realloc function Topics