Provided by: manpages-es_1.55-10_all bug

NOMBRE

       posix_memalign, memalign, valloc - Asigna memoria alineada

SINOPSIS

       #include <stdlib.h>

       int posix_memalign(void **memptr, size_t alignment, size_t size);
       void *memalign(size_t boundary, size_t size);
       void *valloc(size_t size);

DESCRIPCIÓN

       La función posix_memalign() asigna size bytes y deja la dirección de la memoria reservada en *memptr.  La
       dirección  de  la  memoria reservada será un múltiplo de alignment, que debe ser una potencia de dos y un
       múltiplo de sizeof(void *).

       La función obsoleta memalign() asigna size bytes y devuelve  un  puntero  a  la  memoria  reservada.   La
       dirección de memoria será un múltiplo de boundary, que debe ser una potencia de dos.

       La  función  obsoleta  valloc()  asigna  size  bytes  y  devuelve  un puntero a la memoria reservada.  La
       dirección   de   memoria   será   un   múltiplo   del   tamaño   de    página.     Es    equivalente    a
       memalign(sysconf(_SC_PAGESIZE),size).

       En todas estas rutinas, la memoria no se rellena con ceros.

VALOR DEVUELTO

       memalign() y valloc() devuelven un puntero a la memoria reservada, o NULL si falla la petición.

       posix_memalign()  devuelve  cero en caso de éxito, o uno de los códigos de error listados en la siguiente
       sección en caso de fallo. Observe que errno no se modifica.

ERRORES

       EINVAL El parámetro alignment no es una potencia de dos, o no es un múltiplo de sizeof(void *).

       ENOMEM No hay suficiente memoria para satisfacer la petición de reserva.

OBSERVACIONES

       posix_memalign() verifica que alignment cumpla los requisitos detallados  arriba.   memalign()  puede  no
       comprobar que el parámetro boundary sea correcto.

       POSIX  exige  que  la  memoria  obtenida  con posix_memalign() pueda ser liberada usando free().  Algunos
       sistemas no ofrecen ninguna manera de recuperar la memoria reservada con memalign()  o  valloc()  (porque
       sólo  se  puede  pasar  a  free()  un puntero obtenido con malloc(), mientras p.e.  memalign() llamaría a
       malloc() y después alinearía el valor obtenido).  GNU libc permite que la memoria obtenida con cualquiera
       de estas rutinas sea recuperada con free().

       La versión de malloc() de GNU libc siempre devuelve direcciones de memoria alineadas de 8 bytes,  por  lo
       que estas rutinas solamente se necesitan si requiere valores de alineamiento mayores.

AVAILABILITY

       Las  funciones  memalign()  y valloc() han estado disponibles en todas las bibliotecas libc de Linux.  La
       función posix_memalign() está disponible desde glibc 2.1.91.

CONFORME A

       La función valloc() apareció en 3.0 BSD. Está documentada como obsoleta en BSD 4.3,  y  como  antigua  en
       SUSv2.  Ya  no  aparece  en  SUSv3.  La función memalign() aparece en SunOS 4.1.3 pero no en BSD 4.4.  La
       función posix_memalign() viene de POSIX 1003.1d.

VÉASE TAMBIÉN

       malloc(3), free(3), getpagesize(2), brk(2)

GNU                                              11 octubre 2001                               POSIX_MEMALIGN(3)