Lenguaje C: función realloc (ajustar el tamaño del bloque de memoria)

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Lenguaje C: función realloc
(ajustar el tamaño del bloque de memoria)

En el lenguaje de programación C, función de reasignación Se utiliza para cambiar el tamaño de un bloque de memoria previamente asignado. La función realloc asigna un bloque de memoria (que puede hacerlo más grande o más pequeño que su tamaño original) y, si es necesario, copia el contenido del bloque antiguo en el bloque de memoria nuevo.

sintaxis

La sintaxis de la función realloc en lenguaje C es:

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

parámetro o parámetro

ptr antiguo bloque de memoria. tamaño El tamaño del elemento en bytes.

notas

  • ptr debe haber sido asignado por una de las siguientes funciones: función calloc, función malloc o función realloc.

devolver los bienes

La función realloc devuelve un puntero al comienzo del bloque de memoria. Si no se puede asignar el bloque de memoria, la función realloc devolverá un puntero nulo.

titulo requerido

En C, los archivos de encabezado requeridos por la función realloc son:

#include <stdlib.h>

aplicar para

En C, la función realloc está disponible en las siguientes versiones:

  • ANSI/ISO 9899-1990

ejemplo de reasignación

Veamos un ejemplo para ver cómo usar la función realloc en un programa C:

/* Example using realloc by TechOnTheNet.com */

/* The size of memory allocated MUST be larger than the data you will put in it */

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

int main(int argc, const char * argv[])
{
    /* Define required variables */
    char *ptr1, *ptr2;
    size_t length1, length2;

    /* Define the amount of memory required */
    length1 = 10;
    length2 = 30;

    /* Allocate memory for our string */
    ptr1 = (char *)malloc(length1);

    /* Check to see if we were successful */
    if (ptr1 == NULL)
    {
        /* We were not successful, so display a message */
        printf("Could not allocate required memoryn");

        /* And exit */
        exit(1);
    }

    /* Copy a string into the allocated memory */
    strcpy(ptr1, "C malloc");

    /* Oops, we wanted to say more but now do not
     have enough memory to store the message! */

    /* Expand the available memory with realloc */
    ptr2 = (char *)realloc(ptr1, length2);

    /* Check to see if we were successful */
    if (ptr2 == NULL)
    {
        /* We were not successful, so display a message */
        printf("Could not re-allocate required memoryn");

        /* And exit */
        exit(1);
    }

    /* Add the rest of the message to the string */
    strcat(ptr2, " at TechOnTheNet.com");

    /* Display the complete string */
    printf("%sn", ptr2);

    /* Free the memory we allocated */
    free(ptr2);

    return 0;
}

Función similar

Otras funciones de C similares a la función realloc:

  • función calloc
  • función libre
  • función malloc