malloc

Sintaxis

#include <stdlib.h>

void *malloc(size_t size);

Descripción

Esta función reserva en memoria dinámica un bloque de tamaño size bytes. Este bloque debe ser liberado con free.

Valor devuelto

Devuelve un puntero a un bloque de memoria de size bytes, o NULL si no existe suficiente espacio libre para satisfacer la petición.

Portabilidad

ANSI, POSIX

Ejemplo

La función sumaOpuestos calcula la suma de los opuestos a los elementos que están almacenados en el vector pasado por parámetro.

#include <stdio.h>
#include <stdlib.h>
int sumaOpuestos(int *w, int n){
   int i, sumopuestos=0;
   for(i=0;i<n;i++)
      sumopuestos+=(-1)*w[i];
   return sumopuestos;
}
int main (){
   int i, n;
   printf("Introduzca el tamaño del vector\n");
   scanf("%d",&n);
   /* Se reserva memoria dinámica para n enteros (ver sizeof) */
   int *v = (int *) malloc(sizeof(int)*n);
   if(v!=NULL){ 
      for(i=0;i<n;i++) {
         printf("Introduzca el elemento v[%d] ",i);
         scanf("%d",&v[i]);
      }
      printf("La suma de los opuestos a los elementos de v es %d ",sumaOpuestos(v,n));
      free(v);                 /* Se libera la memoria dinámica previamente reservada */
   }
   return 0;
}