brk(2)

NOMBRE
brk, sbrk - cambia el tamaño del segmento de datos

BIBLIOTECA
Biblioteca Estándar C (libc, -lc)

SINOPSIS
#include <unistd.h>

int brk(void *direccón);
void *sbrk(intptr_t incremento);

    Requisitos de Macros de Prueba de Características para glibc (véase feature_test_macros(7)):

brk(), sbrk():
    A partir de glibc 2.19:
        _DEFAULT_SOURCE
            || ((_XOPEN_SOURCE >= 500) &&
                ! (_POSIX_C_SOURCE >= 200112L))
    Desde glibc 2.12 hasta glibc 2.19:
        _BSD_SOURCE || _SVID_SOURCE
            || ((_XOPEN_SOURCE >= 500) &&
                ! (_POSIX_C_SOURCE >= 200112L))
    Antes de glibc 2.12:
        _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500

DESCRIPCIÓN
brk() y sbrk() cambian la ubicación de la interrupción del programa, que define el final del segmento de datos del proceso (es decir, la interrupción del programa es la primera ubicación después del final del segmento de datos no inicializado). Si se aumenta la interrupción del programa, se asignará memoria al proceso; si se disminuye, se liberará.

brk() establece el final del segmento de datos al valor especificado por addr, cuando este valor es razonable, el sistema dispone de suficiente memoria y el proceso no excede su límite máximo para datos (véase setrlimit(2)).

sbrk() aumenta el espacio de datos del programa en increment bytes. Se puede llamar a sbrk() con un increment de 0 para averiguar la dirección actual del comienzo de la zona de memoria dinámica del segumento de datos.

VALOR DEVUELTO
En caso de éxito, brk() retorna cero. En caso de error se devuelve -1, y errno se define como ENOMEM.

En caso de éxito, sbrk() devuelve la interrupción del programa anterior. (Si se aumentó la interrupción, este valor es un puntero al inicio de la memoria recién asignada). En caso de error, se devuelve (void *) -1 y errno se establece en ENOMEM.

ESTÁNDARES
Ninguno.

HISTORIAL
4.3BSD; SUSv1, marcado a extinguir en SUSv2, eliminado en POSIX.1-2001.

NOTAS
Evite usar brk() y sbrk(): el paquete de asignación de memoria malloc(3) es la forma más cómoda y portable de asignar memoria.

Varios sistemas utilizan distintos tipos para el argumento de sbrk(). Los valores comunes son int, ssize_t, ptrdiff_t e intptr_t.

  Diferencias núcleo / biblioteca C
El valor de retorno descrito anteriormente para brk() es el comportamiento proporcionado por la función contenedora de glibc para la llamada al sistema brk() de Linux. (En la mayoría de las demás implementaciones, el valor de retorno de brk() es el mismo; este valor de retorno también se especificó en SUSv2). Sin embargo, la llamada al sistema de Linux devuelve la nueva interrupción del programa en caso de éxito. En caso de error, la llamada al sistema devuelve la interrupción actual. La función contenedora de glibc realiza una tarea (es decir, comprueba si la nueva interrupción es menor que addr) para proporcionar los valores de retorno 0 y -1 descritos anteriormente.

En Linux, sbrk() se implementa como una función de biblioteca que utiliza la llamada al sistema brk() y realiza la contabilidad interna para poder devolver el valor de interrupción anterior.

VÉASE TAMBIÉN
execve(2), getrlimit(2), end(3), malloc(3)

TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Miguel Angel Sepulveda <angel@vivaldi.princeton.edu>, Gerardo Aburruzaga García <gerardo.aburruzaga@uca.es>, Miguel Pérez Ibars <mpi79470@alu.um.es> y Marcos Fouces <marcos@debian.org>

Esta traducción es documentación libre; lea la GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.

Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org.