Dynamic Arrays: Memory Management in C Using Dynamic Memory Allocation

C Programming @ Freshers.in

Dynamic memory allocation in C opens up a world of possibilities, including the creation and management of dynamic arrays. In this article, we will delve into the concept of dynamic arrays, providing detailed explanations and practical examples to help you master this powerful feature for efficient memory management. Dynamic arrays, enabled by dynamic memory allocation in C, provide a powerful way to work with data of varying sizes. By mastering the concepts presented in this article and experimenting with the provided examples, you’ll be well-equipped to implement dynamic arrays in your C programming projects.

Understanding Dynamic Arrays

What are Dynamic Arrays?

Dynamic arrays, often referred to as resizable arrays, are data structures that can grow or shrink in size during program execution. Unlike fixed-size arrays, dynamic arrays are not bound by a predefined size at compile-time. Instead, they are created and resized as needed at runtime.

Creating Dynamic Arrays

To create a dynamic array in C, you can use the malloc or calloc functions to allocate memory for the array, and then manage its size using the realloc function as necessary.

Example: Creating and Resizing a Dynamic Array

#include <stdio.h>
#include <stdlib.h>
int main() {
    int *dynamicArray;
    int initialSize = 5;
    // Create a dynamic array of integers
    dynamicArray = (int *)malloc(initialSize * sizeof(int));
    if (dynamicArray == NULL) {
        printf("Memory allocation failed.\n");
        return 1;
    }
    // Initialize the array
    for (int i = 0; i < initialSize; i++) {
        dynamicArray[i] = i * 2;
    }
    // Print the initial array
    printf("Initial array:\n");
    for (int i = 0; i < initialSize; i++) {
        printf("%d ", dynamicArray[i]);
    }
    // Resize the array to store more integers
    int newSize = 10;
    dynamicArray = (int *)realloc(dynamicArray, newSize * sizeof(int));
    if (dynamicArray == NULL) {
        printf("Memory reallocation failed.\n");
        return 1;
    }
    // Initialize the new elements
    for (int i = initialSize; i < newSize; i++) {
        dynamicArray[i] = i * 2;
    }
    // Print the resized array
    printf("\nResized array:\n");
    for (int i = 0; i < newSize; i++) {
        printf("%d ", dynamicArray[i]);
    }
    // Deallocate the memory when done
    free(dynamicArray);
    return 0;
}

Output:

Initial array:
0 2 4 6 8 
Resized array:
0 2 4 6 8 10 12 14 16 18 

Practical Applications

Dynamic arrays are widely used in C for various purposes, including:

  • Reading and storing data of unknown or variable size.
  • Implementing data structures like dynamic lists, stacks, and queues.
  • Managing memory efficiently for flexible data structures.
Author: user