Provided by: manpages-es_1.55-3_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)