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'ON

       La funcion posix_memalign() asigna size bytes y deja la direccion de la
       memoria reservada en *memptr.  La direccion  de  la  memoria  reservada
       sera  un  multiplo  de alignment, que debe ser una potencia de dos y un
       multiplo de sizeof(void *).

       La funcion obsoleta memalign() asigna size bytes y devuelve un  puntero
       a  la  memoria  reservada.  La direccion de memoria sera un multiplo de
       boundary, que debe ser una potencia de dos.

       La funcion obsoleta valloc() asigna size bytes y devuelve un puntero  a
       la  memoria  reservada.   La  direccion de memoria sera un multiplo del
       tamano        de        pagina.         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 peticion.

       posix_memalign() devuelve cero en caso de exito, o uno de  los  codigos
       de error listados en la siguiente seccion en caso de fallo. Observe que
       errno no se modifica.

ERRORES

       EINVAL El parametro alignment no es una potencia de dos,  o  no  es  un
              multiplo de sizeof(void *).

       ENOMEM No  hay  suficiente  memoria  para  satisfacer  la  peticion  de
              reserva.

OBSERVACIONES

       posix_memalign()  verifica  que   alignment   cumpla   los   requisitos
       detallados  arriba.   memalign()  puede  no  comprobar que el parametro
       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  solo
       se puede pasar a free() un puntero obtenido con malloc(), mientras p.e.
       memalign() llamaria a malloc() y despues alinearia el valor  obtenido).
       GNU  libc  permite  que  la  memoria  obtenida  con cualquiera de estas
       rutinas sea recuperada con free().

       La version 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 funcion posix_memalign() esta disponible
       desde glibc 2.1.91.

CONFORME A

       La funcion valloc() aparecio en 3.0 BSD. Esta documentada como obsoleta
       en  BSD  4.3,  y  como  antigua  en  SUSv2. Ya no aparece en SUSv3.  La
       funcion memalign() aparece en SunOS 4.1.3  pero  no  en  BSD  4.4.   La
       funcion posix_memalign() viene de POSIX 1003.1d.

V'EASE TAMBI'EN

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