logo

Asignación de memoria dinámica en C

El concepto de asignación de memoria dinámica en lenguaje c permite al programador de C asignar memoria en tiempo de ejecución . La asignación de memoria dinámica en lenguaje c es posible mediante 4 funciones del archivo de encabezado stdlib.h.

edad de rihanna
  1. malloc()
  2. calloc()
  3. reasignar()
  4. gratis()

Antes de aprender las funciones anteriores, comprendamos la diferencia entre la asignación de memoria estática y la asignación de memoria dinámica.

asignación de memoria estáticaasignación de memoria dinámica
la memoria se asigna en el momento de la compilación.la memoria se asigna en tiempo de ejecución.
La memoria no se puede aumentar mientras se ejecuta el programa.La memoria se puede aumentar mientras se ejecuta el programa.
utilizado en matriz.utilizado en la lista enlazada.

Ahora echemos un vistazo rápido a los métodos utilizados para la asignación de memoria dinámica.

malloc() Asigna un único bloque de memoria solicitada.
calloc() Asigna múltiples bloques de memoria solicitada.
reasignar() reasigna la memoria ocupada por las funciones malloc() o calloc().
gratis() Libera la memoria asignada dinámicamente.

función malloc() en C

La función malloc() asigna un solo bloque de memoria solicitada.

No inicializa la memoria en el momento de la ejecución, por lo que inicialmente tiene un valor basura.

Devuelve NULL si la memoria no es suficiente.

La sintaxis de la función malloc() se proporciona a continuación:

 ptr=(cast-type*)malloc(byte-size) 

Veamos el ejemplo de la función malloc().

 #include #include int main(){ int n,i,*ptr,sum=0; printf(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)malloc(n*sizeof(int)); //memory allocated using malloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d&apos;,sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>calloc() function in C</h2> <p>The calloc() function allocates multiple block of requested memory.</p> <p>It initially initialize all bytes to zero.</p> <p>It returns NULL if memory is not sufficient.</p> <p>The syntax of calloc() function is given below:</p> <pre> ptr=(cast-type*)calloc(number, byte-size) </pre> <p>Let&apos;s see the example of calloc() function.</p> <pre> #include #include int main(){ int n,i,*ptr,sum=0; printf(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d&apos;,sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>realloc() function in C</h2> <p>If memory is not sufficient for malloc() or calloc(), you can reallocate the memory by realloc() function. In short, it changes the memory size.</p> <p>Let&apos;s see the syntax of realloc() function.</p> <pre> ptr=realloc(ptr, new-size) </pre> <h2>free() function in C</h2> <p>The memory occupied by malloc() or calloc() functions must be released by calling free() function. Otherwise, it will consume memory until program exit.</p> <p>Let&apos;s see the syntax of free() function.</p> <pre> free(ptr) </pre> <hr></n;++i)></pre></n;++i)>

función calloc() en C

La función calloc() asigna múltiples bloques de memoria solicitada.

Inicialmente inicializa todos los bytes a cero.

Devuelve NULL si la memoria no es suficiente.

reemplazar de cadena en java

La sintaxis de la función calloc() se proporciona a continuación:

 ptr=(cast-type*)calloc(number, byte-size) 

Veamos el ejemplo de la función calloc().

 #include #include int main(){ int n,i,*ptr,sum=0; printf(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf(\'%d\',ptr+i); sum+="*(ptr+i);" } printf(\'sum="%d&apos;,sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>realloc() function in C</h2> <p>If memory is not sufficient for malloc() or calloc(), you can reallocate the memory by realloc() function. In short, it changes the memory size.</p> <p>Let&apos;s see the syntax of realloc() function.</p> <pre> ptr=realloc(ptr, new-size) </pre> <h2>free() function in C</h2> <p>The memory occupied by malloc() or calloc() functions must be released by calling free() function. Otherwise, it will consume memory until program exit.</p> <p>Let&apos;s see the syntax of free() function.</p> <pre> free(ptr) </pre> <hr></n;++i)>

función realloc() en C

Si la memoria no es suficiente para malloc() o calloc(), puede reasignar la memoria mediante la función realloc(). En resumen, cambia el tamaño de la memoria.

Veamos la sintaxis de la función realloc().

 ptr=realloc(ptr, new-size) 

función gratuita () en C

La memoria ocupada por las funciones malloc() o calloc() debe liberarse llamando a la función free(). De lo contrario, consumirá memoria hasta que salga el programa.

Veamos la sintaxis de la función free().

 free(ptr)