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)