Loading

NOM

       brk, sbrk - Modifier la taille du segment de données

SYNOPSIS

       #include <unistd.h>

       int brk(void *addr);

       void *sbrk(intptr_t increment);

   Exigences  de  macros  de  test  de  fonctionnalités  pour  la  glibc (voir
   feature_test_macros(7)) :

       brk(), sbrk() : _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >=500

       brk() et sbrk() modifient l’emplacement de l’interruption de programme,
       qui  définit  la  fin du segment de données du processus (c’est-à-dire,
       l’interruption de programme est l’endroit juste à la fin du segment  de
       données  non  initialisé). Augmenter l’interruption de programme a pour
       effet d’allouer de la mémoire au processus ; la diminuer à  pour  effet
       de désallouer de la mémoire.

       brk()  positionne  la fin du segment de données (le premier mot mémoire
       hors de la zone accessible)  à  l’adresse  spécifiée  par  addr.  Cette
       valeur  doit  être  raisonnable,  le système doit avoir suffisamment de
       mémoire, et le processus ne doit pas dépasser  sa  taille  maximale  de
       segment de données (voir setrlimit(2)).

       sbrk() incrémente l’espace de données du programme de increment octets.
       Appeler sbrk() avec un increment nul permet d’obtenir l’emplacement  de
       la limite actuelle.

VALEUR RENVOYÉE

       S’il  réussit,  brk()  renvoie  zéro. En cas d’erreur, il renvoie -1 et
       remplit errno avec ENOMEM (voir la section Notes sur Linux ci‐dessous).

       S’il  réussit,  sbrk()  renvoie l’interruption de programme précédente.
       (Si la limite a été augmentée, cette valeur  est  un  pointeur  sur  le
       début  de la nouvelle zone de données). En cas d’échec, (void *) -1 est
       renvoyé et errno contient le code d’erreur ENOMEM.

CONFORMITÉ

       BSD 4.3 ; SUSv1, considéré comme historique dans SUSv2,  supprimé  dans
       POSIX.1-2001.

NOTES

       Évitez  d’utiliser  brk()  et sbrk() : la fonction d’allocation mémoire
       malloc(3) est une méthode  portable  et  confortable  d’allouer  de  la
       mémoire.

       Différents  systèmes  utilisent  différents  types  comme  paramètres à
       sbrk(). Les plus courants sont int, ssize_t, ptrdiff_t, intptr_t.

   Notes sur Linux
       La valeur de retour décrite ci‐dessus pour brk() est le comportement de
       la  fonction de glibc autour de l’appel système brk() de Linux. (Sur la
       plupart des autres implémentations, la valeur de retour de brk() est la
       même ;  cette  valeur  de  retour  est  également spécifiée par SUSv2.)
       Cependant, l’appel système Linux lui‐même renvoie la nouvelle limite du
       segment  de  données. En cas d’échec, l’appel système renvoie la limite
       actuelle.  La  fonction  enveloppe  de  la  glibc  fait  le  nécessaire
       (c’est-à-dire  vérifie  que  la  nouvelle limite est inférieure à addr)
       pour renvoyer les valeurs de retour 0 et -1 décrites plus haut.

       Sous Linux, sbrk() est implémenté comme une  fonction  de  bibliothèque
       utilisant l’appel système brk(), et fait certains calculs internes pour
       pouvoir renvoyer l’ancienne valeur de la limite.

VOIR AUSSI

       execve(2), getrlimit(2), end(3), malloc(3)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».